bcachefs: Make IO in flight by copygc/rebalance configurable
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 20 Jun 2022 03:03:07 +0000 (23:03 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:34 +0000 (17:09 -0400)
This adds a new option, move_bytes_in_flight, for configuring the amount
of IO in flight by copygc/rebalance - users with many devices in their
filesystem will want to increase this.

In the future we should be smarter about this, but this is an easy
improvement.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/move.c
fs/bcachefs/opts.h

index a852e07affdc7eb1229d0c88d35bc1f817aa2803..08fb8c71893fd7673486d000235158178f93ff9b 100644 (file)
@@ -22,8 +22,6 @@
 #include <linux/ioprio.h>
 #include <linux/kthread.h>
 
-#define SECTORS_IN_FLIGHT_PER_DEVICE   2048
-
 struct moving_io {
        struct list_head        list;
        struct closure          cl;
@@ -693,11 +691,11 @@ static int __bch2_move_data(struct bch_fs *c,
 
                move_ctxt_wait_event(ctxt, &trans,
                        atomic_read(&ctxt->write_sectors) <
-                       SECTORS_IN_FLIGHT_PER_DEVICE);
+                       c->opts.move_bytes_in_flight >> 9);
 
                move_ctxt_wait_event(ctxt, &trans,
                        atomic_read(&ctxt->read_sectors) <
-                       SECTORS_IN_FLIGHT_PER_DEVICE);
+                       c->opts.move_bytes_in_flight >> 9);
 
                bch2_trans_begin(&trans);
 
index dee75d7e6fe8a95f873044eb21270894310b7ed0..43b4488b8c6f7b38ef69a2ed56503eebb3306bd8 100644 (file)
@@ -290,6 +290,11 @@ enum opt_type {
          OPT_UINT(0, U32_MAX),                                         \
          BCH_SB_JOURNAL_RECLAIM_DELAY, 100,                            \
          NULL,         "Delay in milliseconds before automatic journal reclaim")\
+       x(move_bytes_in_flight,         u32,                            \
+         OPT_HUMAN_READABLE|OPT_FS|OPT_MOUNT|OPT_RUNTIME,              \
+         OPT_UINT(1024, U32_MAX),                                      \
+         BCH2_NO_SB_OPT,               1U << 20,                       \
+         NULL,         "Amount of IO in flight to keep in flight by the move path")\
        x(fsck,                         u8,                             \
          OPT_FS|OPT_MOUNT,                                             \
          OPT_BOOL(),                                                   \