diff options
Diffstat (limited to 'fs/bcachefs/sysfs.c')
-rw-r--r-- | fs/bcachefs/sysfs.c | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/fs/bcachefs/sysfs.c b/fs/bcachefs/sysfs.c index 722aa2642b92..34c5f9029bd6 100644 --- a/fs/bcachefs/sysfs.c +++ b/fs/bcachefs/sysfs.c @@ -172,11 +172,9 @@ rw_attribute(cache_replacement_policy); rw_attribute(copy_gc_enabled); sysfs_pd_controller_attribute(copy_gc); -rw_attribute(tier); -rw_attribute(tiering_enabled); -rw_attribute(tiering_percent); -sysfs_pd_controller_attribute(tiering); - +rw_attribute(rebalance_enabled); +rw_attribute(rebalance_percent); +sysfs_pd_controller_attribute(rebalance); rw_attribute(pd_controllers_update_seconds); @@ -332,10 +330,10 @@ SHOW(bch2_fs) sysfs_print(pd_controllers_update_seconds, c->pd_controllers_update_seconds); - sysfs_printf(tiering_enabled, "%i", c->tiering_enabled); - sysfs_print(tiering_percent, c->tiering_percent); + sysfs_printf(rebalance_enabled, "%i", c->rebalance_enabled); + sysfs_print(rebalance_percent, c->rebalance_percent); - sysfs_pd_controller_show(tiering, &c->tiers[1].pd); /* XXX */ + sysfs_pd_controller_show(rebalance, &c->rebalance_pd); /* XXX */ sysfs_printf(meta_replicas_have, "%u", bch2_replicas_online(c, true)); sysfs_printf(data_replicas_have, "%u", bch2_replicas_online(c, false)); @@ -397,19 +395,19 @@ STORE(__bch2_fs) return ret; } - if (attr == &sysfs_tiering_enabled) { - ssize_t ret = strtoul_safe(buf, c->tiering_enabled) + if (attr == &sysfs_rebalance_enabled) { + ssize_t ret = strtoul_safe(buf, c->rebalance_enabled) ?: (ssize_t) size; - bch2_tiering_start(c); /* issue wakeups */ + rebalance_wakeup(c); return ret; } sysfs_strtoul(pd_controllers_update_seconds, c->pd_controllers_update_seconds); - sysfs_strtoul(tiering_percent, c->tiering_percent); - sysfs_pd_controller_store(tiering, &c->tiers[1].pd); /* XXX */ + sysfs_strtoul(rebalance_percent, c->rebalance_percent); + sysfs_pd_controller_store(rebalance, &c->rebalance_pd); /* Debugging: */ @@ -468,7 +466,7 @@ struct attribute *bch2_fs_files[] = { &sysfs_writeback_pages_max, - &sysfs_tiering_percent, + &sysfs_rebalance_percent, &sysfs_compression_stats, NULL @@ -506,8 +504,8 @@ struct attribute *bch2_fs_internal_files[] = { &sysfs_prune_cache, &sysfs_copy_gc_enabled, - &sysfs_tiering_enabled, - sysfs_pd_controller_files(tiering), + &sysfs_rebalance_enabled, + sysfs_pd_controller_files(rebalance), &sysfs_internal_uuid, #define BCH_DEBUG_PARAM(name, description) &sysfs_##name, @@ -564,6 +562,12 @@ STORE(bch2_fs_opts_dir) bch2_opt_set_by_id(&c->opts, id, v); + if ((id == Opt_background_target || + id == Opt_background_compression) && v) { + bch2_rebalance_add_work(c, S64_MAX); + rebalance_wakeup(c); + } + return size; } SYSFS_OPS(bch2_fs_opts_dir); @@ -826,8 +830,6 @@ SHOW(bch2_dev) return out - buf; } - sysfs_print(tier, ca->mi.tier); - if (attr == &sysfs_state_rw) { out += bch2_scnprint_string_list(out, end - out, bch2_dev_state, @@ -891,31 +893,6 @@ STORE(bch2_dev) mutex_unlock(&c->sb_lock); } - if (attr == &sysfs_tier) { - unsigned prev_tier; - unsigned v = strtoul_restrict_or_return(buf, - 0, BCH_TIER_MAX - 1); - - mutex_lock(&c->sb_lock); - prev_tier = ca->mi.tier; - - if (v == ca->mi.tier) { - mutex_unlock(&c->sb_lock); - return size; - } - - mi = &bch2_sb_get_members(c->disk_sb)->members[ca->dev_idx]; - SET_BCH_MEMBER_TIER(mi, v); - bch2_write_super(c); - - clear_bit(ca->dev_idx, c->tiers[prev_tier].devs.d); - set_bit(ca->dev_idx, c->tiers[ca->mi.tier].devs.d); - mutex_unlock(&c->sb_lock); - - bch2_recalc_capacity(c); - bch2_tiering_start(c); - } - if (attr == &sysfs_wake_allocator) bch2_wake_allocator(ca); @@ -933,7 +910,6 @@ struct attribute *bch2_dev_files[] = { /* settings: */ &sysfs_discard, &sysfs_cache_replacement_policy, - &sysfs_tier, &sysfs_state_rw, &sysfs_has_data, |