bcachefs: discard path uses unlock_long()
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 22 Jan 2024 23:08:51 +0000 (18:08 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 24 Jan 2024 22:27:46 +0000 (17:27 -0500)
Some (bad) devices can have really terrible discard latency; we don't
want them blocking memory reclaim and causing warnings.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_background.c

index 10704f2..fd3e175 100644 (file)
@@ -1715,7 +1715,7 @@ static int bch2_discard_one_bucket(struct btree_trans *trans,
                 * This works without any other locks because this is the only
                 * thread that removes items from the need_discard tree
                 */
-               bch2_trans_unlock(trans);
+               bch2_trans_unlock_long(trans);
                blkdev_issue_discard(ca->disk_sb.bdev,
                                     k.k->p.offset * ca->mi.bucket_size,
                                     ca->mi.bucket_size,