}
run_test 74 "Lustre client api program can compile and link"
+test_75() { # LU-2374
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
+ skip "Need MDS version at least 2.4.1" && return
+
+ local index=0
+ local opts_mds="$(mkfs_opts mds1 $(mdsdevname 1)) \
+ --reformat $(mdsdevname 1) $(mdsvdevname 1)"
+ local opts_ost="$(mkfs_opts ost1 $(ostdevname 1)) \
+ --reformat $(ostdevname 1) $(ostvdevname 1)"
+
+ #check with default parameters
+ add mds1 $opts_mds || error "add mds1 failed for default params"
+ add ost1 $opts_ost || error "add ost1 failed for default params"
+
+ opts_mds=$(echo $opts_mds | sed -e "s/--mdt//")
+ opts_mds=$(echo $opts_mds |
+ sed -e "s/--index=$index/--index=$index --mdt/")
+ opts_ost=$(echo $opts_ost | sed -e "s/--ost//")
+ opts_ost=$(echo $opts_ost |
+ sed -e "s/--index=$index/--index=$index --ost/")
+
+ add mds1 $opts_mds || error "add mds1 failed for new params"
+ add ost1 $opts_ost || error "add ost1 failed for new params"
+ return 0
+}
+run_test 75 "The order of --index should be irrelevant"
+
if ! combined_mgs_mds ; then
stop mgs
fi
" a registered target\n", progname);
return 1;
}
- if (IS_MDT(&mop->mo_ldd) || IS_OST(&mop->mo_ldd)) {
- mop->mo_ldd.ldd_svindex = atol(optarg);
- mop->mo_ldd.ldd_flags &= ~LDD_F_NEED_INDEX;
- } else {
- badopt(long_opt[longidx].name, "MDT,OST");
- return 1;
- }
+ /* LU-2374: check whether it is OST/MDT later */
+ mop->mo_ldd.ldd_svindex = atol(optarg);
+ mop->mo_ldd.ldd_flags &= ~LDD_F_NEED_INDEX;
break;
case 'k':
strscpy(mop->mo_mkfsopts, optarg,
}
/* Stand alone MGS doesn't need a index */
- if (!IS_MDT(ldd) && IS_MGS(ldd))
+ if (!IS_MDT(ldd) && IS_MGS(ldd)) {
+ /* But if --index was specified flag an error */
+ if (!(mop.mo_ldd.ldd_flags & LDD_F_NEED_INDEX)) {
+ badopt("--index", "MDT,OST");
+ goto out;
+ }
mop.mo_ldd.ldd_flags &= ~LDD_F_NEED_INDEX;
+ }
if ((mop.mo_ldd.ldd_flags & (LDD_F_NEED_INDEX | LDD_F_UPGRADE14)) ==
(LDD_F_NEED_INDEX | LDD_F_UPGRADE14)) {