diff options
author | Daniel Hill <daniel@gluo.nz> | 2022-05-25 16:11:56 +1200 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:44 -0400 |
commit | 597c6d17b18e2d53e7ab30c5626f38422fe4848b (patch) | |
tree | f2cf1a4eb8dae51b52c265c8ce39988e482e9f31 /fs/bcachefs/sysfs.c | |
parent | b5ac23c465c4ef8e94f6f2c9f2333193dccf9fc3 (diff) | |
download | linux-597c6d17b18e2d53e7ab30c5626f38422fe4848b.tar.gz linux-597c6d17b18e2d53e7ab30c5626f38422fe4848b.tar.bz2 linux-597c6d17b18e2d53e7ab30c5626f38422fe4848b.zip |
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>
Diffstat (limited to 'fs/bcachefs/sysfs.c')
-rw-r--r-- | fs/bcachefs/sysfs.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/fs/bcachefs/sysfs.c b/fs/bcachefs/sysfs.c index a27ceabd5e49..76301209898f 100644 --- a/fs/bcachefs/sysfs.c +++ b/fs/bcachefs/sysfs.c @@ -174,7 +174,7 @@ read_attribute(minor); read_attribute(bucket_size); read_attribute(first_bucket); read_attribute(nbuckets); -read_attribute(durability); +rw_attribute(durability); read_attribute(iodone); read_attribute(io_latency_read); @@ -911,6 +911,19 @@ STORE(bch2_dev) 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) { char *tmp; int ret; |