diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 08b767aefb070b4b706c1341ea569f6dc8e18c19..ed94aa359d2bf24f6712a9b56aaa1414f7edc0c5 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -14,6 +14,12 @@ tbd Cluster File Systems, Inc. <info@clusterfs.com> * Recommended e2fsprogs version: 1.40.2-cfs4 * Note that reiserfs quotas are disabled on SLES 10 in this kernel. +Severity : major +Frequency : always +Bugzilla : 14270 +Description: lfs find does not continue on file error +Details : Continue other files processing when a file/dir is absent. + Severity : normal Bugzilla : 11791 Description: Inconsistent usage of lustre_pack_reply() diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index b4257ec88aa57a5f8da5b4dd7acaf19839fa9cd0..3107095fe234717fc6efb49574094d5f16a778a1 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -980,6 +980,10 @@ static int cb_find_init(char *path, DIR *parent, DIR *dir, __FUNCTION__, path); return ret; } + } else if (errno == ENOENT) { + err_msg("warning: %s: %s does not exist", + __FUNCTION__, path); + goto decided; } else { err_msg("error: %s: %s failed for %s", __FUNCTION__, dir ? "LL_IOC_MDC_GETINFO" : @@ -1078,9 +1082,15 @@ obd_matches: } if (ret) { - fprintf(stderr, "%s: IOC_LOV_GETINFO on %s failed: " - "%s.\n", __FUNCTION__, path, strerror(errno)); - return -EINVAL; + if (errno == ENOENT) { + err_msg("warning: %s: %s does not exist", + __FUNCTION__, path); + goto decided; + } else { + fprintf(stderr, "%s: IOC_LOV_GETINFO on %s failed: " + "%s.\n", __FUNCTION__, path, strerror(errno)); + return ret; + } } /* Check the time on osc. */ @@ -1186,6 +1196,10 @@ static int cb_getstripe(char *path, DIR *parent, DIR *d, void *data, } else if (errno == ENOTTY) { fprintf(stderr, "%s: '%s' not on a Lustre fs?\n", __FUNCTION__, path); + } else if (errno == ENOENT) { + err_msg("warning: %s: %s does not exist", + __FUNCTION__, path); + goto out; } else { err_msg("error: %s: %s failed for %s", __FUNCTION__, d ? "LL_IOC_LOV_GETSTRIPE" : @@ -1516,6 +1530,10 @@ static int cb_quotachown(char *path, DIR *parent, DIR *d, void *data, fprintf(stderr, "%s has no stripe info\n", path); rc = 0; + } else if (errno == ENOENT) { + err_msg("warning: %s: %s does not exist", + __FUNCTION__, path); + rc = 0; } else if (errno != EISDIR) { rc = errno; err_msg("%s ioctl failed for %s.",