Whamcloud - gitweb
LU-1581 utils: support for multiple underlying devices
[fs/lustre-release.git] / lustre / utils / mkfs_lustre.c
index 27fdad3..21f7d19 100644 (file)
@@ -177,6 +177,7 @@ void set_defaults(struct mkfs_opts *mop)
 
         mop->mo_ldd.ldd_svindex = INDEX_UNASSIGNED;
         mop->mo_stripe_count = 1;
+       mop->mo_pool_vdevs = NULL;
 }
 
 static inline void badopt(const char *opt, char *type)
@@ -479,16 +480,20 @@ int parse_opts(int argc, char *const argv[], struct mkfs_opts *mop,
                 }
         }//while
 
-        /* Last arg is device */
-        if (optind != argc - 1) {
-                fatal();
-                fprintf(stderr, "Bad argument: %s\n", argv[optind]);
-                return EINVAL;
-        }
-
-        /* single argument: <device> */
-        if (argc == 2)
-                ++print_only;
+       if (optind == argc) {
+               /* The user didn't specify device name */
+               fatal();
+               fprintf(stderr, "Not enough arguments - device name or "
+                       "pool/dataset name not specified.\n");
+               return EINVAL;
+       } else {
+               /*  The device or pool/filesystem name */
+               strscpy(mop->mo_device, argv[optind], sizeof(mop->mo_device));
+
+               /* Followed by optional vdevs */
+               if (optind < argc - 1)
+                       mop->mo_pool_vdevs = (char **) &argv[optind + 1];
+       }
 
         return 0;
 }
@@ -500,6 +505,7 @@ int main(int argc, char *const argv[])
         char *mountopts = NULL;
         char always_mountopts[512] = "";
         char default_mountopts[512] = "";
+       unsigned mount_type;
         int ret = 0;
 
         if ((progname = strrchr(argv[0], '/')) != NULL)
@@ -523,7 +529,7 @@ int main(int argc, char *const argv[])
            new ones. */
 
         /* Check whether the disk has already been formatted by mkfs.lustre */
-        ret = is_lustre_target(&mop);
+       ret = osd_is_lustre(mop.mo_device, &mount_type);
         if (ret == 0) {
                 fatal();
                 fprintf(stderr, "Device %s has not been formatted with "
@@ -532,7 +538,7 @@ int main(int argc, char *const argv[])
                 goto out;
         }
 
-        ret = read_local_files(&mop);
+       ret = osd_read_ldd(mop.mo_device, &mop.mo_ldd);
         if (ret) {
                 fatal();
                 fprintf(stderr, "Failed to read previous Lustre data from %s "
@@ -665,7 +671,7 @@ int main(int argc, char *const argv[])
 #ifndef TUNEFS /* mkfs.lustre */
         /* Check whether the disk has already been formatted by mkfs.lustre */
         if (!(mop.mo_flags & MO_FORCEFORMAT)) {
-                ret = is_lustre_target(&mop);
+               ret = osd_is_lustre(mop.mo_device, &mount_type);
                 if (ret) {
                         fatal();
                         fprintf(stderr, "Device %s was previously formatted "
@@ -677,7 +683,7 @@ int main(int argc, char *const argv[])
         }
 
         /* Format the backing filesystem */
-        ret = make_lustre_backfs(&mop);
+       ret = osd_make_lustre(&mop);
         if (ret != 0) {
                 fatal();
                 fprintf(stderr, "mkfs failed %d\n", ret);
@@ -686,7 +692,7 @@ int main(int argc, char *const argv[])
 #endif
 
         /* Write our config files */
-        ret = write_local_files(&mop);
+       ret = osd_write_ldd(&mop);
         if (ret != 0) {
                 fatal();
                 fprintf(stderr, "failed to write local files\n");