]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs.c
Update bcachefs sources to 7bf1ac0d46 bcachefs: Correctly initialize new buckets...
[bcachefs-tools-debian] / libbcachefs.c
index 8ba01947fa7e2842352dd6adab2afea8f35dec19..aac50845756b3cc01852a9589ab305bc1256aca9 100644 (file)
@@ -39,7 +39,7 @@ static void init_layout(struct bch_sb_layout *l,
 
        memset(l, 0, sizeof(*l));
 
-       l->magic                = BCACHE_MAGIC;
+       l->magic                = BCHFS_MAGIC;
        l->layout_type          = 0;
        l->nr_superblocks       = 2;
        l->sb_max_size_bits     = ilog2(sb_size);
@@ -150,7 +150,6 @@ struct bch_sb *bch2_format(struct bch_opt_strs      fs_opt_strs,
 {
        struct bch_sb_handle sb = { NULL };
        struct dev_opts *i;
-       struct bch_sb_field_members *mi;
        unsigned max_dev_block_size = 0;
        unsigned opt_id;
 
@@ -188,12 +187,12 @@ struct bch_sb *bch2_format(struct bch_opt_strs    fs_opt_strs,
 
        sb.sb->version          = le16_to_cpu(opts.version);
        sb.sb->version_min      = le16_to_cpu(opts.version);
-       sb.sb->magic            = BCACHE_MAGIC;
+       sb.sb->magic            = BCHFS_MAGIC;
        sb.sb->user_uuid        = opts.uuid;
        sb.sb->nr_devices       = nr_devs;
 
        if (opts.version == bcachefs_metadata_version_current)
-               sb.sb->features[0] |= BCH_SB_FEATURES_ALL;
+               sb.sb->features[0] |= cpu_to_le64(BCH_SB_FEATURES_ALL);
 
        uuid_generate(sb.sb->uuid.b);
 
@@ -222,12 +221,13 @@ struct bch_sb *bch2_format(struct bch_opt_strs    fs_opt_strs,
        sb.sb->time_precision   = cpu_to_le32(1);
 
        /* Member info: */
-       mi = bch2_sb_resize_members(&sb,
+       struct bch_sb_field_members_v2 *mi =
+               bch2_sb_resize_members_v2(&sb,
                        (sizeof(*mi) + sizeof(struct bch_member) *
                        nr_devs) / sizeof(u64));
-
+       mi->member_bytes = cpu_to_le16(sizeof(struct bch_member));
        for (i = devs; i < devs + nr_devs; i++) {
-               struct bch_member *m = mi->members + (i - devs);
+               struct bch_member *m = bch2_members_v2_get_mut(sb.sb, (i - devs));
 
                uuid_generate(m->uuid.b);
                m->nbuckets     = cpu_to_le64(i->nbuckets);
@@ -255,9 +255,7 @@ struct bch_sb *bch2_format(struct bch_opt_strs      fs_opt_strs,
                 * Recompute mi and m after each sb modification: its location
                 * in memory may have changed due to reallocation.
                 */
-               mi = bch2_sb_get_members(sb.sb);
-               m = mi->members + (i - devs);
-
+               m = bch2_members_v2_get_mut(sb.sb, (i - devs));
                SET_BCH_MEMBER_GROUP(m, idx + 1);
        }
 
@@ -279,6 +277,8 @@ struct bch_sb *bch2_format(struct bch_opt_strs      fs_opt_strs,
                SET_BCH_SB_ENCRYPTION_TYPE(sb.sb, 1);
        }
 
+       bch_members_cpy_v2_v1(&sb);
+
        for (i = devs; i < devs + nr_devs; i++) {
                u64 size_sectors = i->size >> 9;
 
@@ -353,7 +353,8 @@ struct bch_sb *__bch2_super_read(int fd, u64 sector)
 
        xpread(fd, &sb, sizeof(sb), sector << 9);
 
-       if (memcmp(&sb.magic, &BCACHE_MAGIC, sizeof(sb.magic)))
+       if (memcmp(&sb.magic, &BCACHE_MAGIC, sizeof(sb.magic)) &&
+           memcmp(&sb.magic, &BCHFS_MAGIC, sizeof(sb.magic)))
                die("not a bcachefs superblock");
 
        size_t bytes = vstruct_bytes(&sb);
@@ -603,8 +604,7 @@ struct bch_opts bch2_parse_opts(struct bch_opt_strs strs)
        u64 v;
 
        for (i = 0; i < bch2_opts_nr; i++) {
-               if (!strs.by_id[i] ||
-                   bch2_opt_table[i].type == BCH_OPT_FN)
+               if (!strs.by_id[i])
                        continue;
 
                ret = bch2_opt_parse(NULL,
@@ -689,7 +689,7 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs)
        struct dirent *d;
        dev_names devs;
 
-       darray_init(devs);
+       darray_init(&devs);
 
        while ((errno = 0), (d = readdir(dir))) {
                struct dev_name n = { 0, NULL, NULL };
@@ -713,7 +713,7 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs)
                n.label = read_file_str(fs.sysfs_fd, label_attr);
                free(label_attr);
 
-               darray_push(devs, n);
+               darray_push(&devs, n);
        }
 
        closedir(dir);