X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs.c;h=aac50845756b3cc01852a9589ab305bc1256aca9;hb=1251ea58a84e365db3754e6f5f57bd442484dc89;hp=8ba01947fa7e2842352dd6adab2afea8f35dec19;hpb=e240b4ae86adb022e3266220ce9807dad8b51beb;p=bcachefs-tools-debian diff --git a/libbcachefs.c b/libbcachefs.c index 8ba0194..aac5084 100644 --- a/libbcachefs.c +++ b/libbcachefs.c @@ -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);