bcachefs: Rip out copygc pd controller
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 18 Apr 2021 00:24:54 +0000 (20:24 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:54 +0000 (17:08 -0400)
We have a separate mechanism for ratelimiting copygc now - the pd
controller has only been causing problems.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_background.c
fs/bcachefs/bcachefs.h
fs/bcachefs/movinggc.c
fs/bcachefs/super.c
fs/bcachefs/sysfs.c

index f603fd3..055b6b5 100644 (file)
@@ -31,38 +31,6 @@ static const unsigned BCH_ALLOC_V1_FIELD_BYTES[] = {
 #undef x
 };
 
-/* Ratelimiting/PD controllers */
-
-static void pd_controllers_update(struct work_struct *work)
-{
-       struct bch_fs *c = container_of(to_delayed_work(work),
-                                          struct bch_fs,
-                                          pd_controllers_update);
-       struct bch_dev *ca;
-       s64 free = 0, fragmented = 0;
-       unsigned i;
-
-       for_each_member_device(ca, c, i) {
-               struct bch_dev_usage stats = bch2_dev_usage_read(ca);
-
-               free += bucket_to_sector(ca,
-                               __dev_buckets_available(ca, stats)) << 9;
-               /*
-                * Bytes of internal fragmentation, which can be
-                * reclaimed by copy GC
-                */
-               fragmented += max_t(s64, 0, (bucket_to_sector(ca,
-                                       stats.d[BCH_DATA_user].buckets +
-                                       stats.d[BCH_DATA_cached].buckets) -
-                                 (stats.d[BCH_DATA_user].sectors +
-                                  stats.d[BCH_DATA_cached].sectors)) << 9);
-       }
-
-       bch2_pd_controller_update(&c->copygc_pd, free, fragmented, -1);
-       schedule_delayed_work(&c->pd_controllers_update,
-                             c->pd_controllers_update_seconds * HZ);
-}
-
 /* Persistent alloc info: */
 
 static inline u64 alloc_field_v1_get(const struct bch_alloc *a,
@@ -1405,7 +1373,4 @@ int bch2_dev_allocator_start(struct bch_dev *ca)
 void bch2_fs_allocator_background_init(struct bch_fs *c)
 {
        spin_lock_init(&c->freelist_lock);
-
-       c->pd_controllers_update_seconds = 5;
-       INIT_DELAYED_WORK(&c->pd_controllers_update, pd_controllers_update);
 }
index 234918f..12441f9 100644 (file)
@@ -664,9 +664,6 @@ struct bch_fs {
        struct workqueue_struct *copygc_wq;
 
        /* ALLOCATION */
-       struct delayed_work     pd_controllers_update;
-       unsigned                pd_controllers_update_seconds;
-
        struct bch_devs_mask    rw_devs[BCH_DATA_NR];
 
        u64                     capacity; /* sectors */
@@ -771,7 +768,6 @@ mempool_t           bio_bounce_pages;
        /* COPYGC */
        struct task_struct      *copygc_thread;
        copygc_heap             copygc_heap;
-       struct bch_pd_controller copygc_pd;
        struct write_point      copygc_write_point;
        s64                     copygc_wait;
 
index 113013d..e25fa0a 100644 (file)
@@ -222,7 +222,7 @@ static int bch2_copygc(struct bch_fs *c)
        ret = bch2_move_data(c,
                             0,                 POS_MIN,
                             BTREE_ID_NR,       POS_MAX,
-                            &c->copygc_pd.rate,
+                            NULL,
                             writepoint_ptr(&c->copygc_write_point),
                             copygc_pred, NULL,
                             &move_stats);
@@ -328,9 +328,6 @@ static int bch2_copygc_thread(void *arg)
 
 void bch2_copygc_stop(struct bch_fs *c)
 {
-       c->copygc_pd.rate.rate = UINT_MAX;
-       bch2_ratelimit_reset(&c->copygc_pd.rate);
-
        if (c->copygc_thread) {
                kthread_stop(c->copygc_thread);
                put_task_struct(c->copygc_thread);
@@ -367,6 +364,4 @@ int bch2_copygc_start(struct bch_fs *c)
 
 void bch2_fs_copygc_init(struct bch_fs *c)
 {
-       bch2_pd_controller_init(&c->copygc_pd);
-       c->copygc_pd.d_term = 0;
 }
index 1939944..650a559 100644 (file)
@@ -293,7 +293,6 @@ void bch2_fs_read_only(struct bch_fs *c)
        percpu_ref_kill(&c->writes);
 
        cancel_work_sync(&c->ec_stripe_delete_work);
-       cancel_delayed_work(&c->pd_controllers_update);
 
        /*
         * If we're not doing an emergency shutdown, we want to wait on
@@ -378,8 +377,6 @@ static int bch2_fs_read_write_late(struct bch_fs *c)
                return ret;
        }
 
-       schedule_delayed_work(&c->pd_controllers_update, 5 * HZ);
-
        schedule_work(&c->ec_stripe_delete_work);
 
        return 0;
@@ -571,7 +568,6 @@ void __bch2_fs_stop(struct bch_fs *c)
                cancel_work_sync(&ca->io_error_work);
 
        cancel_work_sync(&c->btree_write_error_work);
-       cancel_delayed_work_sync(&c->pd_controllers_update);
        cancel_work_sync(&c->read_only_work);
 }
 
index 1f31458..ff93e5b 100644 (file)
@@ -189,7 +189,6 @@ rw_attribute(label);
 
 rw_attribute(copy_gc_enabled);
 read_attribute(copy_gc_wait);
-sysfs_pd_controller_attribute(copy_gc);
 
 rw_attribute(rebalance_enabled);
 sysfs_pd_controller_attribute(rebalance);
@@ -198,8 +197,6 @@ rw_attribute(promote_whole_extents);
 
 read_attribute(new_stripes);
 
-rw_attribute(pd_controllers_update_seconds);
-
 read_attribute(io_timers_read);
 read_attribute(io_timers_write);
 
@@ -331,12 +328,8 @@ SHOW(bch2_fs)
 
        sysfs_printf(copy_gc_enabled, "%i", c->copy_gc_enabled);
 
-       sysfs_print(pd_controllers_update_seconds,
-                   c->pd_controllers_update_seconds);
-
        sysfs_printf(rebalance_enabled,         "%i", c->rebalance.enabled);
        sysfs_pd_controller_show(rebalance,     &c->rebalance.pd); /* XXX */
-       sysfs_pd_controller_show(copy_gc,       &c->copygc_pd);
        sysfs_hprint(copy_gc_wait,
                     max(0LL, c->copygc_wait -
                         atomic64_read(&c->io_clock[WRITE].now)) << 9);
@@ -447,10 +440,7 @@ STORE(bch2_fs)
                return ret;
        }
 
-       sysfs_strtoul(pd_controllers_update_seconds,
-                     c->pd_controllers_update_seconds);
        sysfs_pd_controller_store(rebalance,    &c->rebalance.pd);
-       sysfs_pd_controller_store(copy_gc,      &c->copygc_pd);
 
        sysfs_strtoul(promote_whole_extents,    c->promote_whole_extents);
 
@@ -572,7 +562,6 @@ struct attribute *bch2_fs_internal_files[] = {
        &sysfs_rebalance_enabled,
        &sysfs_rebalance_work,
        sysfs_pd_controller_files(rebalance),
-       sysfs_pd_controller_files(copy_gc),
 
        &sysfs_new_stripes,