Whamcloud - gitweb
LU-2740 utils: Add support for --version option
[fs/lustre-release.git] / lustre / utils / mkfs_lustre.c
index 49eb00a..5310276 100644 (file)
@@ -76,6 +76,7 @@
 
 char *progname;
 int verbose = 1;
+int version;
 static int print_only = 0;
 
 #ifdef HAVE_LDISKFS_OSD
@@ -103,7 +104,6 @@ static int print_only = 0;
 
 void usage(FILE *out)
 {
-       fprintf(out, "%s v"LUSTRE_VERSION_STRING"\n", progname);
        fprintf(out, "usage: %s <target type> [--backfstype="FSLIST"] "
                "--fsname=<filesystem name>\n"
                "\t--index=<target index> [options] <device>\n", progname);
@@ -162,6 +162,8 @@ void usage(FILE *out)
                "\t\t--comment=<user comment>: arbitrary string (%d bytes)\n"
                "\t\t--dryrun: report what we would do; don't write to disk\n"
                "\t\t--verbose: e.g. show mkfs progress\n"
+               "\t\t-V|--version: output build version of the utility and\n"
+               "\t\t\texit\n"
                "\t\t--quiet\n",
                (int)sizeof(((struct lustre_disk_data *)0)->ldd_userdata));
        return;
@@ -248,8 +250,8 @@ static char *convert_hostnames(char *s1)
                *s2 = sep;
 
                 if (nid == LNET_NID_ANY) {
-                        fprintf(stderr, "%s: Can't parse NID '%s'\n",
-                                progname, s1);
+                       fprintf(stderr, "%s: Cannot resolve hostname '%s'.\n",
+                               progname, s1);
                         free(converted);
                         return NULL;
                 }
@@ -304,10 +306,11 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop,
                { "servicenode",        required_argument,      NULL, 's' },
                { "network",            required_argument,      NULL, 't' },
                { "verbose",            no_argument,            NULL, 'v' },
+               { "version",            no_argument,            NULL, 'V' },
                { "writeconf",          no_argument,            NULL, 'w' },
                { 0,                    0,                      NULL,  0  }
        };
-       char *optstring = "b:c:C:d:ef:Ghi:k:L:m:MnNo:Op:PqrRs:t:Uu:vw";
+       char *optstring = "b:c:C:d:ef:Ghi:k:L:m:MnNo:Op:PqrRs:t:Uu:vVw";
        int opt;
        int rc, longidx;
        int failnode_set = 0, servicenode_set = 0;
@@ -350,9 +353,9 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop,
                         //FIXME
                         printf("Configdev not implemented\n");
                         return 1;
-                case 'd':
-                        mop->mo_device_sz = atol(optarg);
-                        break;
+               case 'd':
+                       mop->mo_device_kb = atol(optarg);
+                       break;
                 case 'e':
                         mop->mo_ldd.ldd_params[0] = '\0';
                         /* Must update the mgs logs */
@@ -498,12 +501,17 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop,
                         strscpy(mop->mo_ldd.ldd_userdata, optarg,
                                 sizeof(mop->mo_ldd.ldd_userdata));
                         break;
-                case 'v':
-                        verbose++;
-                        break;
-                case 'w':
-                        mop->mo_ldd.ldd_flags |= LDD_F_WRITECONF;
-                        break;
+               case 'v':
+                       verbose++;
+                       break;
+               case 'V':
+                       ++version;
+                       fprintf(stdout, "%s %s\n", progname,
+                               LUSTRE_VERSION_STRING);
+                       return 0;
+               case 'w':
+                       mop->mo_ldd.ldd_flags |= LDD_F_WRITECONF;
+                       break;
                case 'Q':
                        mop->mo_flags |= MO_QUOTA;
                        break;
@@ -603,16 +611,16 @@ int main(int argc, char *const argv[])
                mop.mo_ldd.ldd_flags |= LDD_F_WRITECONF;
        }
 
-        if (strstr(mop.mo_ldd.ldd_params, PARAM_MGSNODE))
-            mop.mo_mgs_failnodes++;
+       if (strstr(mop.mo_ldd.ldd_params, PARAM_MGSNODE))
+               mop.mo_mgs_failnodes++;
 
-        if (verbose > 0)
-                print_ldd("Read previous values", &(mop.mo_ldd));
+       if (verbose > 0)
+               print_ldd("Read previous values", &(mop.mo_ldd));
 #endif
 
-        ret = parse_opts(argc, argv, &mop, &mountopts);
-        if (ret)
-                goto out;
+       ret = parse_opts(argc, argv, &mop, &mountopts);
+       if (ret || version)
+               goto out;
 
         ldd = &mop.mo_ldd;
 
@@ -661,27 +669,15 @@ int main(int argc, char *const argv[])
                mop.mo_ldd.ldd_flags &= ~LDD_F_NEED_INDEX;
                mop.mo_ldd.ldd_svindex = 0;
        }
-
-#if 0
-        /*
-         * Comment out these 2 checks temporarily, since for multi-MDSes
-         * in single node only 1 mds node could have mgs service
-         */
-        if (IS_MDT(ldd) && !IS_MGS(ldd) && (mop.mo_mgs_failnodes == 0)) {
-                verrprint("No management node specified, adding MGS to this "
-                          "MDT\n");
-                ldd->ldd_flags |= LDD_F_SV_TYPE_MGS;
-        }
-        if (!IS_MGS(ldd) && (mop.mo_mgs_failnodes == 0)) {
-                fatal();
-                if (IS_MDT(ldd))
-                        fprintf(stderr, "Must specify --mgs or --mgsnode=\n");
-                else
-                        fprintf(stderr, "Must specify --mgsnode=\n");
-                ret = EINVAL;
-                goto out;
-        }
-#endif
+       if (!IS_MGS(ldd) && (mop.mo_mgs_failnodes == 0)) {
+               fatal();
+               if (IS_MDT(ldd))
+                       fprintf(stderr, "Must specify --mgs or --mgsnode\n");
+               else
+                       fprintf(stderr, "Must specify --mgsnode\n");
+               ret = EINVAL;
+               goto out;
+       }
        if ((IS_MDT(ldd) || IS_OST(ldd)) && mop.mo_ldd.ldd_fsname[0] == '\0') {
                fatal();
                fprintf(stderr, "Must specify --fsname for MDT/OST device\n");