diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-03-30 00:06:03 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-02 16:02:56 -0400 |
commit | f0c681af7c027452bf2218998be6c1c1e489d534 (patch) | |
tree | 4436320b64cad17fcd4b3df9bcdb690d90787a92 | |
parent | 26c000fd681ba5ed2e20513f12c69743fe21b772 (diff) |
bcachefs: Fix commit flags in discard & invalidate paths
Since the bucket invalidate and discard paths are required for other
allocations to make forward progress, they at a minimum need
BTREE_INSERT_USE_RESERVE. Watermarks may need further work.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/alloc_background.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c index 81cbfeb58cd1..07a76993318f 100644 --- a/fs/bcachefs/alloc_background.c +++ b/fs/bcachefs/alloc_background.c @@ -862,7 +862,9 @@ static void bch2_do_discards_work(struct work_struct *work) bch2_bucket_is_open_safe(c, k.k->p.inode, k.k->p.offset)) continue; - ret = __bch2_trans_do(&trans, NULL, NULL, 0, + ret = __bch2_trans_do(&trans, NULL, NULL, + BTREE_INSERT_USE_RESERVE| + BTREE_INSERT_NOFAIL, bch2_clear_need_discard(&trans, k.k->p, ca, &discard_done)); if (ret) break; @@ -954,6 +956,7 @@ static void bch2_do_invalidates_work(struct work_struct *work) for_each_member_device(ca, c, i) while (!ret && should_invalidate_buckets(ca)) ret = __bch2_trans_do(&trans, NULL, NULL, + BTREE_INSERT_USE_RESERVE| BTREE_INSERT_NOFAIL, invalidate_one_bucket(&trans, ca)); |