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-17 15:44:29 -0400 |
commit | 3816696e3b2e99c4943a901b988902a6441ed495 (patch) | |
tree | 702f195dd811e777cc85144e55d41333d6bed064 | |
parent | 1475e748932de212f3373c7081426517122dc41f (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)); |