From 6d775021473e53b623cd78f35a4d51e67136918a Mon Sep 17 00:00:00 2001 From: Oleg Drokin Date: Tue, 30 Apr 2019 18:00:09 +0000 Subject: [PATCH] Revert "LU-11367 som: integrate LSOM with lfs find" This is causing LU-12253 This reverts commit 5b6569affc9a0e33fa5d7d2061834397da13e0cb. Change-Id: I5a70d4cec5bb81f8067e847cec99c77bc8f94093 Reviewed-on: https://review.whamcloud.com/34780 Reviewed-by: Oleg Drokin Tested-by: Oleg Drokin --- lustre/doc/lfs-find.1 | 4 - lustre/include/lustre/lustreapi.h | 3 +- lustre/include/uapi/linux/lustre/lustre_idl.h | 3 - lustre/include/uapi/linux/lustre/lustre_user.h | 20 ++--- lustre/llite/dir.c | 90 ++++++------------- lustre/mdt/mdt_handler.c | 4 - lustre/mdt/mdt_som.c | 16 ++-- lustre/tests/sanity.sh | 36 +------- lustre/utils/lfs.c | 6 +- lustre/utils/liblustreapi.c | 116 ++++++------------------- 10 files changed, 69 insertions(+), 229 deletions(-) diff --git a/lustre/doc/lfs-find.1 b/lustre/doc/lfs-find.1 index 1b6e46c..4486b92 100644 --- a/lustre/doc/lfs-find.1 +++ b/lustre/doc/lfs-find.1 @@ -12,7 +12,6 @@ lfs-find \- Lustre client utility to list files with specific attributes [[\fB!\fR] \fB--component-start|\fB--comp-start\fR [\fB+-\fR]\fIn\fR[\fBKMGTPE\fR]] [[\fB!\fR] \fB--gid\fR|\fB-g\fR|\fB--group\fR|\fB-G\fR <\fIgname\fR>|<\fIgid\fR>] [[\fB!\fR] \fB--layout\fR|\fB-L mdt\fR,\fBraid0\fR,\fBreleased\fR] -[\fB--lazy\fR|\fB-z\fR] [\fB--maxdepth\fR|\fB-D\fI n\fR] [[\fB!\fR] \fB--mdt\fR|\fB--mdt-index\fR|\fB-m\fR <\fIuuid\fR|\fIindex\fR,...>] [[\fB!\fR] \fB--mdt-count\fR|\fB-T\fR [\fB+-\fR]\fIn\fR] @@ -122,9 +121,6 @@ HSM-archived files that are not resident in the filesystem. Files that have the first data component on an MDT. .RE .TP -.BR --lazy | -z -Use LSOM xattr as file size and blocks if LSOM is valid. -.TP .BR --maxdepth Limits find to decend at most \fIn\fR levels of directory tree. .TP diff --git a/lustre/include/lustre/lustreapi.h b/lustre/include/lustre/lustreapi.h index 9844822..0e51d25 100644 --- a/lustre/include/lustre/lustreapi.h +++ b/lustre/include/lustre/lustreapi.h @@ -263,8 +263,7 @@ struct find_param { fp_exclude_hash_type:1, fp_yaml:1, /* output layout in YAML */ fp_check_blocks:1, - fp_exclude_blocks:1, - fp_lazy:1; + fp_exclude_blocks:1; enum llapi_layout_verbose fp_verbose; int fp_quiet; diff --git a/lustre/include/uapi/linux/lustre/lustre_idl.h b/lustre/include/uapi/linux/lustre/lustre_idl.h index 3d392d1..4b0b67f 100644 --- a/lustre/include/uapi/linux/lustre/lustre_idl.h +++ b/lustre/include/uapi/linux/lustre/lustre_idl.h @@ -1301,9 +1301,6 @@ lov_mds_md_max_stripe_count(size_t buf_size, __u32 lmm_magic) #define OBD_MD_FLPROJID (0x0100000000000000ULL) /* project ID */ #define OBD_MD_SECCTX (0x0200000000000000ULL) /* embed security xattr */ -#define OBD_MD_FLLSIZE (0x0200000000000000ULL) /* Lazy size */ -#define OBD_MD_FLLBLOCKS (0x0400000000000000ULL) /* Lazy blocks */ - #define OBD_MD_FLALLQUOTA (OBD_MD_FLUSRQUOTA | \ OBD_MD_FLGRPQUOTA | \ OBD_MD_FLPRJQUOTA) diff --git a/lustre/include/uapi/linux/lustre/lustre_user.h b/lustre/include/uapi/linux/lustre/lustre_user.h index 7b99c49..6229b61 100644 --- a/lustre/include/uapi/linux/lustre/lustre_user.h +++ b/lustre/include/uapi/linux/lustre/lustre_user.h @@ -505,13 +505,11 @@ struct fsxattr { #define LL_STATFS_LOV 2 #define LL_STATFS_NODELAY 4 -#define IOC_MDC_TYPE 'i' -#define IOC_MDC_LOOKUP _IOWR(IOC_MDC_TYPE, 20, struct obd_device *) -#define IOC_MDC_GETFILESTRIPE _IOWR(IOC_MDC_TYPE, 21, struct lov_user_md *) -#define IOC_MDC_GETFILEINFO_OLD _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data_v1 *) -#define IOC_MDC_GETFILEINFO _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data) -#define LL_IOC_MDC_GETINFO_OLD _IOWR(IOC_MDC_TYPE, 23, struct lov_user_mds_data_v1 *) -#define LL_IOC_MDC_GETINFO _IOWR(IOC_MDC_TYPE, 23, struct lov_user_mds_data) +#define IOC_MDC_TYPE 'i' +#define IOC_MDC_LOOKUP _IOWR(IOC_MDC_TYPE, 20, struct obd_device *) +#define IOC_MDC_GETFILESTRIPE _IOWR(IOC_MDC_TYPE, 21, struct lov_user_md *) +#define IOC_MDC_GETFILEINFO _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data *) +#define LL_IOC_MDC_GETINFO _IOWR(IOC_MDC_TYPE, 23, struct lov_user_mds_data *) #define MAX_OBD_NAME 128 /* If this changes, a NEW ioctl must be added */ @@ -759,17 +757,11 @@ static inline __u32 lov_user_md_size(__u16 stripes, __u32 lmm_magic) * use this. It is unsafe to #define those values in this header as it * is possible the application has already #included . */ #ifdef HAVE_LOV_USER_MDS_DATA -#define lov_user_mds_data lov_user_mds_data_v2 +#define lov_user_mds_data lov_user_mds_data_v1 struct lov_user_mds_data_v1 { lstat_t lmd_st; /* MDS stat struct */ struct lov_user_md_v1 lmd_lmm; /* LOV EA V1 user data */ } __attribute__((packed)); - -struct lov_user_mds_data_v2 { - lstat_t lmd_st; /* MDS stat struct */ - __u64 lmd_flags; /* MDS stat flags */ - struct lov_user_md_v1 lmd_lmm; /* LOV EA V1 user data */ -} __attribute__((packed)); #endif struct lmv_user_mds_data { diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index 6b4e377..d04196e 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -1569,45 +1569,38 @@ out_rmdir: case LL_IOC_LOV_GETSTRIPE: case LL_IOC_LOV_GETSTRIPE_NEW: case LL_IOC_MDC_GETINFO: - case LL_IOC_MDC_GETINFO_OLD: case IOC_MDC_GETFILEINFO: - case IOC_MDC_GETFILEINFO_OLD: case IOC_MDC_GETFILESTRIPE: { struct ptlrpc_request *request = NULL; struct lov_user_md __user *lump; - struct lov_mds_md *lmm = NULL; - struct mdt_body *body; - char *filename = NULL; - lstat_t __user *statp = NULL; - __u64 __user *flags = NULL; - int lmmsize; - - if (cmd == IOC_MDC_GETFILEINFO_OLD || - cmd == IOC_MDC_GETFILEINFO || - cmd == IOC_MDC_GETFILESTRIPE) { + struct lov_mds_md *lmm = NULL; + struct mdt_body *body; + char *filename = NULL; + int lmmsize; + + if (cmd == IOC_MDC_GETFILEINFO || + cmd == IOC_MDC_GETFILESTRIPE) { filename = ll_getname((const char __user *)arg); - if (IS_ERR(filename)) - RETURN(PTR_ERR(filename)); + if (IS_ERR(filename)) + RETURN(PTR_ERR(filename)); - rc = ll_lov_getstripe_ea_info(inode, filename, &lmm, - &lmmsize, &request); + rc = ll_lov_getstripe_ea_info(inode, filename, &lmm, + &lmmsize, &request); } else { rc = ll_dir_getstripe(inode, (void **)&lmm, &lmmsize, &request, 0); } - if (request) { - body = req_capsule_server_get(&request->rq_pill, - &RMF_MDT_BODY); - LASSERT(body != NULL); - } else { - GOTO(out_req, rc); - } + if (request) { + body = req_capsule_server_get(&request->rq_pill, + &RMF_MDT_BODY); + LASSERT(body != NULL); + } else { + GOTO(out_req, rc); + } if (rc == -ENODATA && (cmd == IOC_MDC_GETFILEINFO || - cmd == LL_IOC_MDC_GETINFO || - cmd == IOC_MDC_GETFILEINFO_OLD || - cmd == LL_IOC_MDC_GETINFO_OLD)) { + cmd == LL_IOC_MDC_GETINFO)) { lmmsize = 0; rc = 0; } @@ -1619,21 +1612,11 @@ out_rmdir: cmd == LL_IOC_LOV_GETSTRIPE || cmd == LL_IOC_LOV_GETSTRIPE_NEW) { lump = (struct lov_user_md __user *)arg; - } else if (cmd == IOC_MDC_GETFILEINFO_OLD || - cmd == LL_IOC_MDC_GETINFO_OLD){ - struct lov_user_mds_data_v1 __user *lmdp; - - lmdp = (struct lov_user_mds_data_v1 __user *)arg; - statp = &lmdp->lmd_st; - lump = &lmdp->lmd_lmm; - } else { + } else { struct lov_user_mds_data __user *lmdp; - lmdp = (struct lov_user_mds_data __user *)arg; - statp = &lmdp->lmd_st; - flags = &lmdp->lmd_flags; - lump = &lmdp->lmd_lmm; - } + lump = &lmdp->lmd_lmm; + } if (lmmsize == 0) { /* If the file has no striping then zero out *lump so @@ -1646,10 +1629,9 @@ out_rmdir: rc = -EOVERFLOW; } - if (cmd == IOC_MDC_GETFILEINFO || cmd == LL_IOC_MDC_GETINFO || - cmd == IOC_MDC_GETFILEINFO_OLD || - cmd == LL_IOC_MDC_GETINFO_OLD) { - lstat_t st = { 0 }; + if (cmd == IOC_MDC_GETFILEINFO || cmd == LL_IOC_MDC_GETINFO) { + struct lov_user_mds_data __user *lmdp; + lstat_t st = { 0 }; st.st_dev = inode->i_sb->s_dev; st.st_mode = body->mbo_mode; @@ -1667,27 +1649,9 @@ out_rmdir: sbi->ll_flags & LL_SBI_32BIT_API); - if (copy_to_user(statp, &st, sizeof(st))) + lmdp = (struct lov_user_mds_data __user *)arg; + if (copy_to_user(&lmdp->lmd_st, &st, sizeof(st))) GOTO(out_req, rc = -EFAULT); - - if (cmd == IOC_MDC_GETFILEINFO || - cmd == LL_IOC_MDC_GETINFO) { - __u64 valid = body->mbo_valid; - - /* - * For a striped directory, do not return - * the valid FLSIZE and FLBLOCKS flags to - * the caller. - */ - if (cmd == LL_IOC_MDC_GETINFO && - ll_i2info(inode)->lli_lsm_md != NULL) - valid &= ~(OBD_MD_FLSIZE | - OBD_MD_FLBLOCKS); - - if (flags && copy_to_user(flags, &valid, - sizeof(*flags))) - GOTO(out_req, rc = -EFAULT); - } } EXIT; diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index cda4e48..2ce7a68 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -801,10 +801,6 @@ void mdt_pack_attr2body(struct mdt_thread_info *info, struct mdt_body *b, b->mbo_valid |= OBD_MD_FLSIZE | OBD_MD_FLBLOCKS; } else if (info->mti_som_valid) { /* som is valid */ b->mbo_valid |= OBD_MD_FLSIZE | OBD_MD_FLBLOCKS; - } else if (ma->ma_valid & MA_SOM) { /* lsom is valid */ - b->mbo_valid |= OBD_MD_FLLSIZE | OBD_MD_FLLBLOCKS; - b->mbo_size = ma->ma_som.ms_size; - b->mbo_blocks = ma->ma_som.ms_blocks; } } diff --git a/lustre/mdt/mdt_som.c b/lustre/mdt/mdt_som.c index ccd80ee..3eebe03 100644 --- a/lustre/mdt/mdt_som.c +++ b/lustre/mdt/mdt_som.c @@ -85,21 +85,21 @@ int mdt_get_som(struct mdt_thread_info *info, struct mdt_object *obj, ma->ma_valid |= MA_SOM; - CDEBUG(D_INODE, DFID": Reading som attrs: " - "valid: %x, size: %lld, blocks: %lld\n", - PFID(mdt_object_fid(obj)), som->ms_valid, - som->ms_size, som->ms_blocks); - - if (som->ms_valid & SOM_FL_STRICT) { + if ((som->ms_valid & SOM_FL_STRICT)) { attr->la_valid |= LA_SIZE | LA_BLOCKS; + attr->la_size = som->ms_size; + attr->la_blocks = som->ms_blocks; /* * Size on MDS is valid and could be returned * to client. */ - attr->la_size = som->ms_size; - attr->la_blocks = som->ms_blocks; info->mti_som_valid = 1; + + CDEBUG(D_INODE, DFID": Reading som attrs: " + "valid: %x, size: %lld, blocks: %lld\n", + PFID(mdt_object_fid(obj)), som->ms_valid, + som->ms_size, som->ms_blocks); } } else if (rc == -ENODATA) { rc = 0; diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 9ae38c5..1996346 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -5209,73 +5209,39 @@ test_56r() { setup_56 $dir $NUMFILES $NUMDIRS local expected=12 - local cmd="$LFS find -size 0 -type f -lazy $dir" + local cmd="$LFS find -size 0 -type f $dir" local nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - cmd="$LFS find -size 0 -type f $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" - expected=0 - cmd="$LFS find ! -size 0 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find ! -size 0 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - echo "test" > $dir/$tfile echo "test2" > $dir/$tfile.2 && sync expected=1 - cmd="$LFS find -size 5 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find -size 5 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - expected=1 - cmd="$LFS find -size +5 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find -size +5 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - expected=2 - cmd="$LFS find -size +0 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find -size +0 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - expected=2 - cmd="$LFS find ! -size -5 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find ! -size -5 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || error "'$cmd' wrong: found $nums, expected $expected" - expected=12 - cmd="$LFS find -size -5 -type f -lazy $dir" - nums=$($cmd | wc -l) - [ $nums -eq $expected ] || - error "'$cmd' wrong: found $nums, expected $expected" cmd="$LFS find -size -5 -type f $dir" nums=$($cmd | wc -l) [ $nums -eq $expected ] || diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 0a11a7b..eaeca58 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -3616,7 +3616,6 @@ static int lfs_find(int argc, char **argv) { .val = 'U', .name = "user", .has_arg = required_argument }, /* getstripe { .val = 'v', .name = "verbose", .has_arg = no_argument }, */ /* getstripe { .val = 'y', .name = "yaml", .has_arg = no_argument }, */ - { .val = 'z', .name = "lazy", .has_arg = no_argument }, { .name = NULL } }; int pathstart = -1; int pathend = -1; @@ -3630,7 +3629,7 @@ static int lfs_find(int argc, char **argv) /* when getopt_long_only() hits '!' it returns 1, puts "!" in optarg */ while ((c = getopt_long_only(argc, argv, - "-0A:b:c:C:D:E:g:G:H:i:L:m:M:n:N:O:Ppqrs:S:t:T:u:U:vz", + "-0A:b:c:C:D:E:g:G:H:i:L:m:M:n:N:O:Ppqrs:S:t:T:u:U:v", long_opts, NULL)) >= 0) { xtime = NULL; xsign = NULL; @@ -4110,9 +4109,6 @@ err_free: param.fp_check_mdt_count = 1; param.fp_exclude_mdt_count = !!neg_opt; break; - case 'z': - param.fp_lazy = 1; - break; default: ret = CMD_HELP; goto err; diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index 8ca6b48..c7a8281 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -1665,7 +1665,7 @@ static int common_param_init(struct find_param *param, char *path) lum_size = PATH_MAX + 1; param->fp_lum_size = lum_size; - param->fp_lmd = calloc(1, sizeof(lstat_t) + sizeof(__u64) + lum_size); + param->fp_lmd = calloc(1, sizeof(lstat_t) + lum_size); if (param->fp_lmd == NULL) { llapi_error(LLAPI_MSG_ERROR, -ENOMEM, "error: allocation of %zu bytes for ioctl", @@ -1771,32 +1771,11 @@ again: return ret; } -static int convert_lmdbuf_v1v2(void *lmdbuf, int lmdlen) -{ struct lov_user_mds_data *lmd = lmdbuf; - struct lov_user_mds_data_v1 *lmd_v1; - int offset; - - lmd_v1 = malloc(lmdlen); - if (lmd_v1 == NULL) { - llapi_printf(LLAPI_MSG_ERROR, "out of memory\n"); - return -ENOMEM; - } - - memcpy(lmd_v1, lmdbuf, lmdlen); - lmd->lmd_flags = 0; - offset = sizeof(lstat_t) + sizeof(__u64); - memcpy((char *)lmdbuf + offset, &lmd_v1->lmd_lmm, lmdlen - offset); - free(lmd_v1); - return 0; -} - int get_lmd_info_fd(char *path, int parent_fd, int dir_fd, void *lmdbuf, int lmdlen, enum get_lmd_info_type type) { struct lov_user_mds_data *lmd = lmdbuf; lstat_t *st = &lmd->lmd_st; - static bool use_old_ioctl; - unsigned long cmd; int ret = 0; if (parent_fd < 0 && dir_fd < 0) @@ -1809,22 +1788,9 @@ int get_lmd_info_fd(char *path, int parent_fd, int dir_fd, * and returns struct lov_user_mds_data, while * LL_IOC_LOV_GETSTRIPE returns only struct lov_user_md. */ - if (type == GET_LMD_INFO) - cmd = use_old_ioctl ? LL_IOC_MDC_GETINFO_OLD : - LL_IOC_MDC_GETINFO; - else - cmd = LL_IOC_LOV_GETSTRIPE; - -retry_getinfo: - ret = ioctl(dir_fd, cmd, lmdbuf); - if (ret < 0 && errno == ENOTTY && cmd == LL_IOC_MDC_GETINFO) { - cmd = LL_IOC_MDC_GETINFO_OLD; - use_old_ioctl = true; - goto retry_getinfo; - } - - if (cmd == LL_IOC_MDC_GETINFO_OLD && !ret) - ret = convert_lmdbuf_v1v2(lmdbuf, lmdlen); + ret = ioctl(dir_fd, type == GET_LMD_INFO ? LL_IOC_MDC_GETINFO : + LL_IOC_LOV_GETSTRIPE, + lmdbuf); } else if (parent_fd >= 0) { char *fname = strrchr(path, '/'); @@ -1846,25 +1812,10 @@ retry_getinfo: errno = -ret; else if (ret >= lmdlen || ret++ == 0) errno = EINVAL; - else { - if (type == GET_LMD_INFO) - cmd = use_old_ioctl ? IOC_MDC_GETFILEINFO_OLD : - IOC_MDC_GETFILEINFO; - else - cmd = IOC_MDC_GETFILESTRIPE; - -retry_getfileinfo: - ret = ioctl(parent_fd, cmd, lmdbuf); - if (ret < 0 && errno == ENOTTY && - cmd == IOC_MDC_GETFILEINFO) { - cmd = IOC_MDC_GETFILEINFO_OLD; - use_old_ioctl = true; - goto retry_getfileinfo; - } - - if (cmd == IOC_MDC_GETFILEINFO_OLD && !ret) - ret = convert_lmdbuf_v1v2(lmdbuf, lmdlen); - } + else + ret = ioctl(parent_fd, type == GET_LMD_INFO ? + IOC_MDC_GETFILEINFO : + IOC_MDC_GETFILESTRIPE, lmdbuf); } if (ret && type == GET_LMD_INFO) { @@ -1879,12 +1830,6 @@ retry_getfileinfo: "error: %s: lstat failed for %s", __func__, path); } - - /* It may be wrong to set use_old_ioctl with true as - * the file is not a lustre fs. So reset it with false - * directly here. - */ - use_old_ioctl = false; } else if (errno == ENOENT) { ret = -errno; llapi_error(LLAPI_MSG_WARN, ret, @@ -4107,7 +4052,6 @@ static int cb_find_init(char *path, DIR *parent, DIR **dirp, int checked_type = 0; int ret = 0; __u32 stripe_count = 0; - __u64 flags; int fd = -2; if (parent == NULL && dir == NULL) @@ -4387,27 +4331,17 @@ obd_matches: for_mds = lustre_fs ? (S_ISREG(st->st_mode) && stripe_count) : 0; - decision = find_time_check(st, param, for_mds); - if (decision == -1) - goto decided; - } - - /* If file still fits the request, ask ost for updated info. - * The regular stat is almost of the same speed as some new - * 'glimpse-size-ioctl'. - */ + decision = find_time_check(st, param, for_mds); + if (decision == -1) + goto decided; + } - flags = param->fp_lmd->lmd_flags; - if (param->fp_check_size && - ((S_ISREG(st->st_mode) && stripe_count) || S_ISDIR(st->st_mode)) && - !(flags & OBD_MD_FLSIZE || - (param->fp_lazy && flags & OBD_MD_FLLSIZE))) - decision = 0; + /* If file still fits the request, ask ost for updated info. + The regular stat is almost of the same speed as some new + 'glimpse-size-ioctl'. */ - if (param->fp_check_blocks && - ((S_ISREG(st->st_mode) && stripe_count) || S_ISDIR(st->st_mode)) && - !(flags & OBD_MD_FLBLOCKS || - (param->fp_lazy && flags & OBD_MD_FLLBLOCKS))) + if ((param->fp_check_size || param->fp_check_blocks) && + ((S_ISREG(st->st_mode) && stripe_count) || S_ISDIR(st->st_mode))) decision = 0; if (!decision) { @@ -4427,16 +4361,16 @@ obd_matches: else ret = lstat_f(path, st); - if (ret) { - if (errno == ENOENT) { - llapi_error(LLAPI_MSG_ERROR, -ENOENT, - "warning: %s: %s does not exist", - __func__, path); - goto decided; - } else { + if (ret) { + if (errno == ENOENT) { + llapi_error(LLAPI_MSG_ERROR, -ENOENT, + "warning: %s: %s does not exist", + __func__, path); + goto decided; + } else { ret = -errno; llapi_error(LLAPI_MSG_ERROR, ret, - "%s: stat on %s failed", + "%s: IOC_LOV_GETINFO on %s failed", __func__, path); goto out; } -- 1.8.3.1