195 lines
6.1 KiB
Diff
195 lines
6.1 KiB
Diff
From 86066b111be8a1ef502332ab0511d2cf65766bcd Mon Sep 17 00:00:00 2001
|
|
From: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Date: Thu, 24 Oct 2024 01:06:53 -0400
|
|
Subject: [PATCH 045/233] bcachefs: copygc_enabled, rebalance_enabled now
|
|
opts.h options
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
They can now be set at mount time
|
|
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Signed-off-by: Alexander Miroshnichenko <alex@millerson.name>
|
|
---
|
|
fs/bcachefs/bcachefs.h | 2 --
|
|
fs/bcachefs/movinggc.c | 4 ++--
|
|
fs/bcachefs/opts.h | 12 ++++++++++++
|
|
fs/bcachefs/rebalance.c | 4 ++--
|
|
fs/bcachefs/rebalance_types.h | 2 --
|
|
fs/bcachefs/super.c | 3 ---
|
|
fs/bcachefs/sysfs.c | 31 +++++++------------------------
|
|
7 files changed, 23 insertions(+), 35 deletions(-)
|
|
|
|
diff --git a/fs/bcachefs/bcachefs.h b/fs/bcachefs/bcachefs.h
|
|
index d4d95ef6791f..e1ab67c533f0 100644
|
|
--- a/fs/bcachefs/bcachefs.h
|
|
+++ b/fs/bcachefs/bcachefs.h
|
|
@@ -1096,8 +1096,6 @@ struct bch_fs {
|
|
u64 counters_on_mount[BCH_COUNTER_NR];
|
|
u64 __percpu *counters;
|
|
|
|
- unsigned copy_gc_enabled:1;
|
|
-
|
|
struct bch2_time_stats times[BCH_TIME_STAT_NR];
|
|
|
|
struct btree_transaction_stats btree_transaction_stats[BCH_TRANSACTIONS_NR];
|
|
diff --git a/fs/bcachefs/movinggc.c b/fs/bcachefs/movinggc.c
|
|
index d658be90f737..725292d69fd6 100644
|
|
--- a/fs/bcachefs/movinggc.c
|
|
+++ b/fs/bcachefs/movinggc.c
|
|
@@ -350,9 +350,9 @@ static int bch2_copygc_thread(void *arg)
|
|
bch2_trans_unlock_long(ctxt.trans);
|
|
cond_resched();
|
|
|
|
- if (!c->copy_gc_enabled) {
|
|
+ if (!c->opts.copygc_enabled) {
|
|
move_buckets_wait(&ctxt, buckets, true);
|
|
- kthread_wait_freezable(c->copy_gc_enabled ||
|
|
+ kthread_wait_freezable(c->opts.copygc_enabled ||
|
|
kthread_should_stop());
|
|
}
|
|
|
|
diff --git a/fs/bcachefs/opts.h b/fs/bcachefs/opts.h
|
|
index 918eb6730117..e0e23c29c2d6 100644
|
|
--- a/fs/bcachefs/opts.h
|
|
+++ b/fs/bcachefs/opts.h
|
|
@@ -473,6 +473,18 @@ enum fsck_err_opts {
|
|
BCH2_NO_SB_OPT, true, \
|
|
NULL, "Enable nocow mode: enables runtime locking in\n"\
|
|
"data move path needed if nocow will ever be in use\n")\
|
|
+ x(copygc_enabled, u8, \
|
|
+ OPT_FS|OPT_MOUNT, \
|
|
+ OPT_BOOL(), \
|
|
+ BCH2_NO_SB_OPT, true, \
|
|
+ NULL, "Enable copygc: disable for debugging, or to\n"\
|
|
+ "quiet the system when doing performance testing\n")\
|
|
+ x(rebalance_enabled, u8, \
|
|
+ OPT_FS|OPT_MOUNT, \
|
|
+ OPT_BOOL(), \
|
|
+ BCH2_NO_SB_OPT, true, \
|
|
+ NULL, "Enable rebalance: disable for debugging, or to\n"\
|
|
+ "quiet the system when doing performance testing\n")\
|
|
x(no_data_io, u8, \
|
|
OPT_MOUNT, \
|
|
OPT_BOOL(), \
|
|
diff --git a/fs/bcachefs/rebalance.c b/fs/bcachefs/rebalance.c
|
|
index dc70e6feaf79..d8cb346ac138 100644
|
|
--- a/fs/bcachefs/rebalance.c
|
|
+++ b/fs/bcachefs/rebalance.c
|
|
@@ -338,9 +338,9 @@ static int do_rebalance(struct moving_context *ctxt)
|
|
BTREE_ITER_all_snapshots);
|
|
|
|
while (!bch2_move_ratelimit(ctxt)) {
|
|
- if (!r->enabled) {
|
|
+ if (!c->opts.rebalance_enabled) {
|
|
bch2_moving_ctxt_flush_all(ctxt);
|
|
- kthread_wait_freezable(r->enabled ||
|
|
+ kthread_wait_freezable(c->opts.rebalance_enabled ||
|
|
kthread_should_stop());
|
|
}
|
|
|
|
diff --git a/fs/bcachefs/rebalance_types.h b/fs/bcachefs/rebalance_types.h
|
|
index 0fffb536c1d0..fe5098c17dfc 100644
|
|
--- a/fs/bcachefs/rebalance_types.h
|
|
+++ b/fs/bcachefs/rebalance_types.h
|
|
@@ -30,8 +30,6 @@ struct bch_fs_rebalance {
|
|
struct bbpos scan_start;
|
|
struct bbpos scan_end;
|
|
struct bch_move_stats scan_stats;
|
|
-
|
|
- unsigned enabled:1;
|
|
};
|
|
|
|
#endif /* _BCACHEFS_REBALANCE_TYPES_H */
|
|
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c
|
|
index d6411324cd3f..7e2431de3a94 100644
|
|
--- a/fs/bcachefs/super.c
|
|
+++ b/fs/bcachefs/super.c
|
|
@@ -810,9 +810,6 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts)
|
|
INIT_LIST_HEAD(&c->vfs_inodes_list);
|
|
mutex_init(&c->vfs_inodes_lock);
|
|
|
|
- c->copy_gc_enabled = 1;
|
|
- c->rebalance.enabled = 1;
|
|
-
|
|
c->journal.flush_write_time = &c->times[BCH_TIME_journal_flush_write];
|
|
c->journal.noflush_write_time = &c->times[BCH_TIME_journal_noflush_write];
|
|
c->journal.flush_seq_time = &c->times[BCH_TIME_journal_flush_seq];
|
|
diff --git a/fs/bcachefs/sysfs.c b/fs/bcachefs/sysfs.c
|
|
index 3270bfab9466..4ab0ccba2ab5 100644
|
|
--- a/fs/bcachefs/sysfs.c
|
|
+++ b/fs/bcachefs/sysfs.c
|
|
@@ -213,10 +213,8 @@ BCH_PERSISTENT_COUNTERS()
|
|
rw_attribute(discard);
|
|
rw_attribute(label);
|
|
|
|
-rw_attribute(copy_gc_enabled);
|
|
read_attribute(copy_gc_wait);
|
|
|
|
-rw_attribute(rebalance_enabled);
|
|
sysfs_pd_controller_attribute(rebalance);
|
|
read_attribute(rebalance_status);
|
|
|
|
@@ -340,9 +338,6 @@ SHOW(bch2_fs)
|
|
if (attr == &sysfs_gc_gens_pos)
|
|
bch2_gc_gens_pos_to_text(out, c);
|
|
|
|
- sysfs_printf(copy_gc_enabled, "%i", c->copy_gc_enabled);
|
|
-
|
|
- sysfs_printf(rebalance_enabled, "%i", c->rebalance.enabled);
|
|
sysfs_pd_controller_show(rebalance, &c->rebalance.pd); /* XXX */
|
|
|
|
if (attr == &sysfs_copy_gc_wait)
|
|
@@ -419,23 +414,6 @@ STORE(bch2_fs)
|
|
{
|
|
struct bch_fs *c = container_of(kobj, struct bch_fs, kobj);
|
|
|
|
- if (attr == &sysfs_copy_gc_enabled) {
|
|
- ssize_t ret = strtoul_safe(buf, c->copy_gc_enabled)
|
|
- ?: (ssize_t) size;
|
|
-
|
|
- if (c->copygc_thread)
|
|
- wake_up_process(c->copygc_thread);
|
|
- return ret;
|
|
- }
|
|
-
|
|
- if (attr == &sysfs_rebalance_enabled) {
|
|
- ssize_t ret = strtoul_safe(buf, c->rebalance.enabled)
|
|
- ?: (ssize_t) size;
|
|
-
|
|
- rebalance_wakeup(c);
|
|
- return ret;
|
|
- }
|
|
-
|
|
sysfs_pd_controller_store(rebalance, &c->rebalance.pd);
|
|
|
|
/* Debugging: */
|
|
@@ -611,10 +589,8 @@ struct attribute *bch2_fs_internal_files[] = {
|
|
|
|
&sysfs_gc_gens_pos,
|
|
|
|
- &sysfs_copy_gc_enabled,
|
|
&sysfs_copy_gc_wait,
|
|
|
|
- &sysfs_rebalance_enabled,
|
|
sysfs_pd_controller_files(rebalance),
|
|
|
|
&sysfs_moving_ctxts,
|
|
@@ -683,6 +659,13 @@ STORE(bch2_fs_opts_dir)
|
|
(id == Opt_compression && !c->opts.background_compression)))
|
|
bch2_set_rebalance_needs_scan(c, 0);
|
|
|
|
+ if (v && id == Opt_rebalance_enabled)
|
|
+ rebalance_wakeup(c);
|
|
+
|
|
+ if (v && id == Opt_copygc_enabled &&
|
|
+ c->copygc_thread)
|
|
+ wake_up_process(c->copygc_thread);
|
|
+
|
|
ret = size;
|
|
err:
|
|
bch2_write_ref_put(c, BCH_WRITE_REF_sysfs);
|
|
--
|
|
2.45.2
|
|
|