1

bcachefs: make durability a read-write sysfs option

Sometimes the user may need to change durability after formatting to
match current hardware setup, this option provides a quick and flexible
alternative to removing then adding the device.
It is HIGHLY ADVISED TO RUN REREPLICATE after changing this value so the
system doesn't remain degraded.

Signed-off-by: Daniel Hill <daniel@gluo.nz>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Daniel Hill 2022-05-25 16:11:56 +12:00 committed by Kent Overstreet
parent b5ac23c465
commit 597c6d17b1

View File

@ -174,7 +174,7 @@ read_attribute(minor);
read_attribute(bucket_size); read_attribute(bucket_size);
read_attribute(first_bucket); read_attribute(first_bucket);
read_attribute(nbuckets); read_attribute(nbuckets);
read_attribute(durability); rw_attribute(durability);
read_attribute(iodone); read_attribute(iodone);
read_attribute(io_latency_read); read_attribute(io_latency_read);
@ -911,6 +911,19 @@ STORE(bch2_dev)
mutex_unlock(&c->sb_lock); mutex_unlock(&c->sb_lock);
} }
if (attr == &sysfs_durability) {
u64 v = strtoul_or_return(buf);
mutex_lock(&c->sb_lock);
mi = &bch2_sb_get_members(c->disk_sb.sb)->members[ca->dev_idx];
if (v != BCH_MEMBER_DURABILITY(mi)) {
SET_BCH_MEMBER_DURABILITY(mi, v + 1);
bch2_write_super(c);
}
mutex_unlock(&c->sb_lock);
}
if (attr == &sysfs_label) { if (attr == &sysfs_label) {
char *tmp; char *tmp;
int ret; int ret;