Cleanup layout checking in lod layer and lfs command-line utility,
for DoM components.
Lustre-change: https://review.whamcloud.com/37267
Lustre-commit:
4ce8a29d8bfc5b77893b642cdf2c33ceed960866
Reported-by: Clement Barthelemy <clement.barthelemy@nextino.eu>
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Ib8b184a31d26442ed10241dc12a0452e5243d0e8
Reviewed-on: https://review.whamcloud.com/37410
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
RETURN(rc);
}
}
+ /* Any stripe count is forbidden on DoM component */
+ if (lum->lmm_stripe_count) {
+ CDEBUG(D_LAYOUT,
+ "invalid DoM layout stripe count %u, must be 0\n",
+ le16_to_cpu(lum->lmm_stripe_count));
+ RETURN(-EINVAL);
+ }
+
+ /* Any pool is forbidden on DoM component */
+ if (lum->lmm_magic == LOV_USER_MAGIC_V3) {
+ struct lov_user_md_v3 *v3 = (void *)lum;
+
+ if (v3->lmm_pool_name[0] != '\0') {
+ CDEBUG(D_LAYOUT,
+ "DoM component cannot have pool assigned\n");
+ RETURN(-EINVAL);
+ }
+ }
}
prev_end = le64_to_cpu(ext->e_end);
lov_pattern(v1->lmm_pattern) == LOV_PATTERN_MDT)
lod_comp->llc_stripe_count = v1->lmm_stripe_count;
+ if (lov_pattern(lod_comp->llc_pattern) == LOV_PATTERN_MDT &&
+ lod_comp->llc_stripe_count != 0) {
+ CDEBUG(D_LAYOUT, "%s: invalid stripe count: %u\n",
+ lod2obd(d)->obd_name,
+ lod_comp->llc_stripe_count);
+ GOTO(free_comp, rc = -EINVAL);
+ }
+
lod_comp->llc_stripe_offset = v1->lmm_stripe_offset;
lod_obj_set_pool(lo, i, pool_name);
- LASSERT(ergo(lov_pattern(lod_comp->llc_pattern) ==
- LOV_PATTERN_MDT, lod_comp->llc_stripe_count == 0));
-
if (pool_name == NULL)
continue;
fprintf(stderr, "warning: '--ost-list' is "
"deprecated, use '--ost' instead\n");
#endif
+ if (lsa.lsa_pattern == LLAPI_LAYOUT_MDT) {
+ fprintf(stderr,
+ "%s %s: -o|--ost incompatible with DoM layout\n",
+ progname, argv[0]);
+ goto usage_error;
+ }
lsa.lsa_nr_tgts = parse_targets(tgts,
sizeof(tgts) / sizeof(__u32),
lsa.lsa_nr_tgts, optarg);