diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-07-11 00:23:59 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:10:07 +0300 |
commit | ea28c86722954a58e3bab24eec3e7624e8d4956b (patch) | |
tree | f662b6d2a63333cdf3c8828400b257760522d78d /fs/bcachefs/super.c | |
parent | b912913613a1195ba86cbb1bc9b1c12b4c6c4a14 (diff) | |
download | linux-ea28c86722954a58e3bab24eec3e7624e8d4956b.tar.xz |
bcachefs: Don't start copygc until recovery is finished
With "bcachefs: Snapshot depth, skiplist fields", we now can't run data
move operations until after bch2_check_snapshots() is complete.
Ideally we'd have the copygc (and rebalance) threads wait until
c->curr_recovery_pass has advanced, but the waitlist handling is tricky
- so for now, move starting copygc back to read_write_late().
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/super.c')
-rw-r--r-- | fs/bcachefs/super.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c index 6ab98c2299dd..63e9dafa8395 100644 --- a/fs/bcachefs/super.c +++ b/fs/bcachefs/super.c @@ -344,6 +344,19 @@ static int bch2_fs_read_write_late(struct bch_fs *c) { int ret; + /* + * Data move operations can't run until after check_snapshots has + * completed, and bch2_snapshot_is_ancestor() is available. + * + * Ideally we'd start copygc/rebalance earlier instead of waiting for + * all of recovery/fsck to complete: + */ + ret = bch2_copygc_start(c); + if (ret) { + bch_err(c, "error starting copygc thread"); + return ret; + } + ret = bch2_rebalance_start(c); if (ret) { bch_err(c, "error starting rebalance thread"); @@ -403,12 +416,6 @@ static int __bch2_fs_read_write(struct bch_fs *c, bool early) return ret; } - ret = bch2_copygc_start(c); - if (ret) { - bch_err(c, "error starting copygc thread"); - return ret; - } - if (!early) { ret = bch2_fs_read_write_late(c); if (ret) |