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);
{
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;
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);
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);
* 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);
}
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;
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);
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,
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 };
n.label = read_file_str(fs.sysfs_fd, label_attr);
free(label_attr);
- darray_push(devs, n);
+ darray_push(&devs, n);
}
closedir(dir);