[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC v2 for-6.8/block 15/18] buffer: add a new helper to read sb block
- To: Jan Kara <jack@xxxxxxx>, Yu Kuai <yukuai1@xxxxxxxxxxxxxxx>
- From: Yu Kuai <yukuai1@xxxxxxxxxxxxxxx>
- Date: Tue, 12 Dec 2023 09:32:10 +0800
- Cc: axboe@xxxxxxxxx, roger.pau@xxxxxxxxxx, colyli@xxxxxxx, kent.overstreet@xxxxxxxxx, joern@xxxxxxxxxxxxxxx, miquel.raynal@xxxxxxxxxxx, richard@xxxxxx, vigneshr@xxxxxx, sth@xxxxxxxxxxxxx, hoeppner@xxxxxxxxxxxxx, hca@xxxxxxxxxxxxx, gor@xxxxxxxxxxxxx, agordeev@xxxxxxxxxxxxx, jejb@xxxxxxxxxxxxx, martin.petersen@xxxxxxxxxx, clm@xxxxxx, josef@xxxxxxxxxxxxxx, dsterba@xxxxxxxx, viro@xxxxxxxxxxxxxxxxxx, brauner@xxxxxxxxxx, nico@xxxxxxxxxxx, xiang@xxxxxxxxxx, chao@xxxxxxxxxx, tytso@xxxxxxx, adilger.kernel@xxxxxxxxx, agruenba@xxxxxxxxxx, jack@xxxxxxxx, konishi.ryusuke@xxxxxxxxx, willy@xxxxxxxxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, p.raghav@xxxxxxxxxxx, hare@xxxxxxx, linux-block@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, linux-bcache@xxxxxxxxxxxxxxx, linux-mtd@xxxxxxxxxxxxxxxxxxx, linux-s390@xxxxxxxxxxxxxxx, linux-scsi@xxxxxxxxxxxxxxx, linux-bcachefs@xxxxxxxxxxxxxxx, linux-btrfs@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-erofs@xxxxxxxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, gfs2@xxxxxxxxxxxxxxx, linux-nilfs@xxxxxxxxxxxxxxx, yi.zhang@xxxxxxxxxx, "yangerkun@xxxxxxxxxx" <yangerkun@xxxxxxxxxx>, "yukuai (C)" <yukuai3@xxxxxxxxxx>
- Delivery-date: Tue, 12 Dec 2023 01:32:35 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Hi,
在 2023/12/12 1:27, Jan Kara 写道:
On Mon 11-12-23 22:07:53, Yu Kuai wrote:
From: Yu Kuai <yukuai3@xxxxxxxxxx>
Unlike __bread_gfp(), ext4 has special handing while reading sb block:
1) __GFP_NOFAIL is not set, and memory allocation can fail;
2) If buffer write failed before, set buffer uptodate and don't read
block from disk;
3) REQ_META is set for all IO, and REQ_PRIO is set for reading xattr;
4) If failed, return error ptr instead of NULL;
This patch add a new helper __bread_gfp2() that will match above 2 and 3(
1 will be used, and 4 will still be encapsulated by ext4), and prepare to
prevent calling mapping_gfp_constraint() directly on bd_inode->i_mapping
in ext4.
Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
...
+/*
+ * This works like __bread_gfp() except:
+ * 1) If buffer write failed before, set buffer uptodate and don't read
+ * block from disk;
+ * 2) Caller can pass in additional op_flags like REQ_META;
+ */
+struct buffer_head *
+__bread_gfp2(struct block_device *bdev, sector_t block, unsigned int size,
+ blk_opf_t op_flags, gfp_t gfp)
+{
+ return bread_gfp(bdev, block, size, op_flags, gfp, true);
+}
+EXPORT_SYMBOL(__bread_gfp2);
__bread_gfp2() is not a great name, why not just using bread_gfp()
directly? I'm not a huge fan of boolean arguments but three different flags
arguments would be too much for my taste ;) so I guess I can live with
that.
I agree that __bread_gfp2 is not a greate name, if possible, I'll try to
figure out a better name for v3.
Thanks for reviewing this patchset!
Kuai
Honza
|