Lines Matching refs:sb

51 #include "sb-clean.h"
52 #include "sb-counters.h"
53 #include "sb-errors.h"
54 #include "sb-members.h"
206 if (!memcmp(&c->disk_sb.sb->uuid, &uuid, sizeof(uuid)))
664 for (i = 0; i < c->sb.nr_devices; i++) {
690 if (__bch2_uuid_to_fs(c->sb.uuid)) {
703 ret = kobject_add(&c->kobj, NULL, "%pU", c->sb.user_uuid.b) ?:
734 static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts)
837 ret = bch2_sb_to_fs(c, sb);
843 pr_uuid(&name, c->sb.user_uuid.b);
852 if (le16_to_cpu(sb->version) <= bcachefs_metadata_version_inode_v2 &&
853 !BCH_SB_JOURNAL_FLUSH_DELAY(sb))
854 SET_BCH_SB_JOURNAL_FLUSH_DELAY(sb, 1000);
856 if (le16_to_cpu(sb->version) <= bcachefs_metadata_version_inode_v2 &&
857 !BCH_SB_JOURNAL_RECLAIM_DELAY(sb))
858 SET_BCH_SB_JOURNAL_RECLAIM_DELAY(sb, 100);
861 ret = bch2_opts_from_sb(&c->opts, sb);
942 for (i = 0; i < c->sb.nr_devices; i++)
943 if (bch2_dev_exists(c->disk_sb.sb, i) &&
979 bch2_version_to_text(&p, c->sb.version);
999 bch2_opt_to_text(&p, c, c->disk_sb.sb, opt, v, OPT_SHOW_MOUNT_STYLE);
1026 bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx)->last_mount = cpu_to_le64(now);
1042 ret = BCH_SB_INITIALIZED(c->disk_sb.sb)
1080 static int bch2_dev_may_add(struct bch_sb *sb, struct bch_fs *c)
1082 struct bch_member m = bch2_sb_member_get(sb, sb->dev_idx);
1084 if (le16_to_cpu(sb->block_size) != block_sectors(c))
1088 BCH_SB_BTREE_NODE_SIZE(c->disk_sb.sb))
1095 struct bch_sb_handle *sb,
1098 if (fs == sb)
1101 if (!uuid_equal(&fs->sb->uuid, &sb->sb->uuid))
1104 if (!bch2_dev_exists(fs->sb, sb->sb->dev_idx))
1107 if (fs->sb->block_size != sb->sb->block_size)
1110 if (le16_to_cpu(fs->sb->version) < bcachefs_metadata_version_member_seq ||
1111 le16_to_cpu(sb->sb->version) < bcachefs_metadata_version_member_seq)
1114 if (fs->sb->seq == sb->sb->seq &&
1115 fs->sb->write_time != sb->sb->write_time) {
1119 prt_bdevname(&buf, sb->bdev);
1124 prt_printf(&buf, "seq=%llu but write_time different, got", le64_to_cpu(sb->sb->seq));
1129 bch2_prt_datetime(&buf, le64_to_cpu(fs->sb->write_time));;
1132 prt_bdevname(&buf, sb->bdev);
1134 bch2_prt_datetime(&buf, le64_to_cpu(sb->sb->write_time));;
1138 prt_printf(&buf, "Not using older sb");
1147 struct bch_member m = bch2_sb_member_get(fs->sb, sb->sb->dev_idx);
1149 u64 seq_from_member = le64_to_cpu(sb->sb->seq);
1155 prt_bdevname(&buf, sb->bdev);
1163 prt_bdevname(&buf, sb->bdev);
1165 prt_bdevname(&buf, sb->bdev);
1170 prt_bdevname(&buf, sb->bdev);
1349 struct bch_member member = bch2_sb_member_get(c->disk_sb.sb, dev_idx);
1370 static int __bch2_dev_attach_bdev(struct bch_dev *ca, struct bch_sb_handle *sb)
1376 sb->sb->dev_idx);
1380 if (get_capacity(sb->bdev->bd_disk) <
1388 ret = bch2_dev_journal_init(ca, sb->sb);
1393 ca->disk_sb = *sb;
1394 memset(sb, 0, sizeof(*sb));
1403 static int bch2_dev_attach_bdev(struct bch_fs *c, struct bch_sb_handle *sb)
1410 if (le64_to_cpu(sb->sb->seq) >
1411 le64_to_cpu(c->disk_sb.sb->seq))
1412 bch2_sb_to_fs(c, sb->sb);
1414 BUG_ON(sb->sb->dev_idx >= c->sb.nr_devices ||
1415 !c->devs[sb->sb->dev_idx]);
1417 ca = bch_dev_locked(c, sb->sb->dev_idx);
1419 ret = __bch2_dev_attach_bdev(ca, sb);
1428 if (c->sb.nr_devices == 1)
1508 for (i = 0; i < c->disk_sb.sb->nr_devices; i++) {
1509 if (!bch2_dev_exists(c->disk_sb.sb, i))
1564 m = bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx);
1688 * on-disk journal might still refer to the device index via sb device
1702 m = bch2_members_v2_get_mut(c->disk_sb.sb, dev_idx);
1724 struct bch_sb_handle sb;
1733 ret = bch2_read_super(path, &opts, &sb);
1738 dev_mi = bch2_sb_member_get(sb.sb, sb.sb->dev_idx);
1741 bch2_disk_path_to_text_sb(&label, sb.sb, BCH_MEMBER_GROUP(&dev_mi) - 1);
1748 ret = bch2_dev_may_add(sb.sb, c);
1760 ret = __bch2_dev_attach_bdev(ca, &sb);
1781 if (!bch2_dev_exists(c->disk_sb.sb, dev_idx))
1789 nr_devices = max_t(unsigned, dev_idx + 1, c->sb.nr_devices);
1791 mi = bch2_sb_field_get(c->disk_sb.sb, members_v2);
1801 struct bch_member *m = bch2_members_v2_get_mut(c->disk_sb.sb, dev_idx);
1807 c->disk_sb.sb->nr_devices = nr_devices;
1809 ca->disk_sb.sb->dev_idx = dev_idx;
1848 bch2_free_super(&sb);
1863 struct bch_sb_handle sb = { NULL };
1870 ret = bch2_read_super(path, &opts, &sb);
1876 dev_idx = sb.sb->dev_idx;
1878 ret = bch2_dev_in_fs(&c->disk_sb, &sb, &c->opts);
1883 ret = bch2_dev_attach_bdev(c, &sb);
1912 bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx)->last_mount =
1921 bch2_free_super(&sb);
1987 m = bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx);
2050 struct bch_sb_handle sb = { NULL };
2052 ret = bch2_read_super(devices[i], &opts, &sb);
2056 BUG_ON(darray_push(&sbs, sb));
2064 darray_for_each(sbs, sb)
2065 if (!best || sb_cmp(sb->sb, best->sb) > 0)
2066 best = sb;
2068 darray_for_each_reverse(sbs, sb) {
2069 ret = bch2_dev_in_fs(best, sb, &opts);
2073 bch2_free_super(sb);
2074 darray_remove_item(&sbs, sb);
2075 best -= best > sb;
2084 c = bch2_fs_alloc(best->sb, opts);
2090 darray_for_each(sbs, sb) {
2091 ret = bch2_dev_attach_bdev(c, sb);
2110 darray_for_each(sbs, sb)
2111 bch2_free_super(sb);