Message ID | 20250422142628.1553523-14-hch@lst.de |
---|---|
State | New |
Headers | show |
Series | [01/17] block: add a bio_add_virt_nofail helper | expand |
在 2025/4/22 23:56, Christoph Hellwig 写道: > Replace the code building a bio from a kernel direct map address and > submitting it synchronously with the bdev_rw_virt helper. > > Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Qu Wenruo <wqu@suse.com> In fact I'm waiting for this helper to refactor how we do super block read/write, to get rid of any page cache usage of the block device. Thanks, Qu > --- > fs/btrfs/scrub.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c > index 2c5edcee9450..7bdb2bc0a212 100644 > --- a/fs/btrfs/scrub.c > +++ b/fs/btrfs/scrub.c > @@ -2770,17 +2770,11 @@ static int scrub_one_super(struct scrub_ctx *sctx, struct btrfs_device *dev, > struct page *page, u64 physical, u64 generation) > { > struct btrfs_fs_info *fs_info = sctx->fs_info; > - struct bio_vec bvec; > - struct bio bio; > struct btrfs_super_block *sb = page_address(page); > int ret; > > - bio_init(&bio, dev->bdev, &bvec, 1, REQ_OP_READ); > - bio.bi_iter.bi_sector = physical >> SECTOR_SHIFT; > - __bio_add_page(&bio, page, BTRFS_SUPER_INFO_SIZE, 0); > - ret = submit_bio_wait(&bio); > - bio_uninit(&bio); > - > + ret = bdev_rw_virt(dev->bdev, physical >> SECTOR_SHIFT, sb, > + BTRFS_SUPER_INFO_SIZE, REQ_OP_READ); > if (ret < 0) > return ret; > ret = btrfs_check_super_csum(fs_info, sb);
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 2c5edcee9450..7bdb2bc0a212 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -2770,17 +2770,11 @@ static int scrub_one_super(struct scrub_ctx *sctx, struct btrfs_device *dev, struct page *page, u64 physical, u64 generation) { struct btrfs_fs_info *fs_info = sctx->fs_info; - struct bio_vec bvec; - struct bio bio; struct btrfs_super_block *sb = page_address(page); int ret; - bio_init(&bio, dev->bdev, &bvec, 1, REQ_OP_READ); - bio.bi_iter.bi_sector = physical >> SECTOR_SHIFT; - __bio_add_page(&bio, page, BTRFS_SUPER_INFO_SIZE, 0); - ret = submit_bio_wait(&bio); - bio_uninit(&bio); - + ret = bdev_rw_virt(dev->bdev, physical >> SECTOR_SHIFT, sb, + BTRFS_SUPER_INFO_SIZE, REQ_OP_READ); if (ret < 0) return ret; ret = btrfs_check_super_csum(fs_info, sb);
Replace the code building a bio from a kernel direct map address and submitting it synchronously with the bdev_rw_virt helper. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/btrfs/scrub.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)