From: Wang Shilong Date: Mon, 4 May 2015 13:07:22 +0000 (+0800) Subject: LU-6535 utils: fix updating index and fsname X-Git-Tag: 2.7.55~19 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=c735a3ef9780fe846292b1f4a11d4cc47d90d5e7;p=fs%2Flustre-release.git LU-6535 utils: fix updating index and fsname We should do whether we can update index and fsname checks after we have done all options parsing, otherwise, we failed this command: tunefs.lustre --fsname=lustre --writeconf /dev/mgs but succeed with following command: tunefs.lustre --writeconf --fsname=lustre /dev/mgs Signed-off-by: Wang Shilong Change-Id: Iadeaad1a6245c58214330c544df245b532f42372 Reviewed-on: http://review.whamcloud.com/14632 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: James Nunez Reviewed-by: Emoly Liu Reviewed-by: Oleg Drokin --- diff --git a/lustre/utils/mkfs_lustre.c b/lustre/utils/mkfs_lustre.c index 2b9e5a6..bae26df 100644 --- a/lustre/utils/mkfs_lustre.c +++ b/lustre/utils/mkfs_lustre.c @@ -54,6 +54,7 @@ #include #include #include +#include #include #include @@ -315,6 +316,8 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop, int rc, longidx; int failnode_set = 0, servicenode_set = 0; int replace = 0; + bool index_option = false; + bool fsname_option = false; while ((opt = getopt_long(argc, argv, optstring, long_opt, &longidx)) != EOF) { @@ -399,13 +402,7 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop, usage(stdout); return 1; case 'i': - if (!(mop->mo_ldd.ldd_flags & - (LDD_F_UPGRADE14 | LDD_F_VIRGIN | - LDD_F_WRITECONF))) { - fprintf(stderr, "%s: cannot change the index of" - " a registered target\n", progname); - return 1; - } + index_option = true; /* LU-2374: check whether it is OST/MDT later */ mop->mo_ldd.ldd_svindex = atol(optarg); if (mop->mo_ldd.ldd_svindex >= INDEX_UNASSIGNED) { @@ -423,14 +420,6 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop, break; case 'L': { char *tmp; - if (!(mop->mo_flags & MO_FORCEFORMAT) && - (!(mop->mo_ldd.ldd_flags & - (LDD_F_UPGRADE14 | LDD_F_VIRGIN | - LDD_F_WRITECONF)))) { - fprintf(stderr, "%s: cannot change the name of" - " a registered target\n", progname); - return 1; - } if ((strlen(optarg) < 1) || (strlen(optarg) > 8)) { fprintf(stderr, "%s: filesystem name must be " "1-8 chars\n", progname); @@ -443,6 +432,7 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop, } strscpy(mop->mo_ldd.ldd_fsname, optarg, sizeof(mop->mo_ldd.ldd_fsname)); + fsname_option = true; break; } case 'm': { @@ -531,6 +521,23 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop, } }//while + if (fsname_option && + !(mop->mo_flags & MO_FORCEFORMAT) && + (!(mop->mo_ldd.ldd_flags & + (LDD_F_UPGRADE14 | LDD_F_VIRGIN | + LDD_F_WRITECONF)))) { + fprintf(stderr, "%s: cannot change the name of" + " a registered target\n", progname); + return 1; + } + if (index_option && !(mop->mo_ldd.ldd_flags & + (LDD_F_UPGRADE14 | LDD_F_VIRGIN | + LDD_F_WRITECONF))) { + fprintf(stderr, "%s: cannot change the index of" + " a registered target\n", progname); + return 1; + } + /* Need to clear this flag after parsing 'L' and 'i' options. */ if (replace) mop->mo_ldd.ldd_flags &= ~LDD_F_VIRGIN;