]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - cmd_format.c
Change open_for_format to the block io api
[bcachefs-tools-debian] / cmd_format.c
index 4debc285f9101a3df0e8e0c474fbce43a9d00814..42f3fc6ca4ac822422906a1505a20ff7c6a571ce 100644 (file)
@@ -24,6 +24,7 @@
 #include "libbcachefs.h"
 #include "crypto.h"
 #include "libbcachefs/darray.h"
+#include "libbcachefs/errcode.h"
 #include "libbcachefs/opts.h"
 #include "libbcachefs/super-io.h"
 #include "libbcachefs/util.h"
@@ -218,6 +219,9 @@ int cmd_format(int argc, char *argv[])
                        break;
                }
 
+       if (opts.version != bcachefs_metadata_version_current)
+               initialize = false;
+
        if (!devices.nr)
                die("Please supply a device");
 
@@ -226,8 +230,11 @@ int cmd_format(int argc, char *argv[])
                initialize = false;
        }
 
-       darray_for_each(devices, dev)
-               dev->fd = open_for_format(dev->path, force);
+       darray_for_each(devices, dev) {
+               int ret = open_for_format(dev, force);
+               if (ret)
+                       die("Error opening %s: %s", dev_opts.path, strerror(-ret));
+       }
 
        struct bch_sb *sb =
                bch2_format(fs_opt_strs,
@@ -241,7 +248,7 @@ int cmd_format(int argc, char *argv[])
 
                buf.human_readable_units = true;
 
-               bch2_sb_to_text(&buf, sb, false, 1 << BCH_SB_FIELD_members);
+               bch2_sb_to_text(&buf, sb, false, 1 << BCH_SB_FIELD_members_v2);
                printf("%s", buf.buf);
 
                printbuf_exit(&buf);
@@ -270,7 +277,7 @@ int cmd_format(int argc, char *argv[])
                                                mount_opts);
                if (IS_ERR(c))
                        die("error opening %s: %s", device_paths.data[0],
-                           strerror(-PTR_ERR(c)));
+                           bch2_err_str(PTR_ERR(c)));
 
                bch2_fs_stop(c);
        }
@@ -301,8 +308,9 @@ int cmd_show_super(int argc, char *argv[])
                { "help",                       0, NULL, 'h' },
                { NULL }
        };
-       unsigned fields = 1 << BCH_SB_FIELD_members;
+       unsigned fields = 0;
        bool print_layout = false;
+       bool print_default_fields = true;
        int opt;
 
        while ((opt = getopt_long(argc, argv, "f:lh", longopts, NULL)) != -1)
@@ -312,6 +320,7 @@ int cmd_show_super(int argc, char *argv[])
                                ? ~0
                                : read_flag_list_or_die(optarg,
                                        bch2_sb_fields, "superblock field");
+                       print_default_fields = false;
                        break;
                case 'l':
                        print_layout = true;
@@ -336,7 +345,12 @@ int cmd_show_super(int argc, char *argv[])
        struct bch_sb_handle sb;
        int ret = bch2_read_super(dev, &opts, &sb);
        if (ret)
-               die("Error opening %s: %s", dev, strerror(-ret));
+               die("Error opening %s: %s", dev, bch2_err_str(ret));
+
+       if (print_default_fields)
+               fields = bch2_sb_get_members_v2(sb.sb)
+                       ? 1 << BCH_SB_FIELD_members_v2
+                       : 1 << BCH_SB_FIELD_members_v1;
 
        struct printbuf buf = PRINTBUF;