bcachefs: copygc_enabled, rebalance_enabled now opts.h options
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 24 Oct 2024 05:06:53 +0000 (01:06 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 21 Dec 2024 06:36:16 +0000 (01:36 -0500)
They can now be set at mount time

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bcachefs.h
fs/bcachefs/movinggc.c
fs/bcachefs/opts.h
fs/bcachefs/rebalance.c
fs/bcachefs/rebalance_types.h
fs/bcachefs/super.c
fs/bcachefs/sysfs.c

index d4d95ef6791f3d300de5b2d25bd772713283de75..e1ab67c533f012217238418968d267bf63b9d03d 100644 (file)
@@ -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];
index d658be90f7378fb16831430fd96a8766a2978218..725292d69fd6cad6a7bf4e9104e7c4559ef53219 100644 (file)
@@ -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());
                }
 
index 918eb673011742cd16ea4cfd90cbc3fc4c8f51c0..e0e23c29c2d63bfe5aa5c11811236cb94fb0ec06 100644 (file)
@@ -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(),                                                   \
index dc70e6feaf79b29d88f074813df3cddac9aca22f..d8cb346ac138d4a0ff761e7dbcf67cf9406e0466 100644 (file)
@@ -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());
                }
 
index 0fffb536c1d0c1b65d1a2a68730cab49f7535db2..fe5098c17dfc0a4b9a6d8d142314c86163367d05 100644 (file)
@@ -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 */
index d6411324cd3f8fc3b71410be5536aa99943305a7..7e2431de3a940bf25f18087b83a5c59edbe9dcbc 100644 (file)
@@ -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];
index 3270bfab94661ece78e99131ef701c0f82b35520..4ab0ccba2ab5d8b4291fd6919e18ed0d19e2ce04 100644 (file)
@@ -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);