From: Al Viro <viro@zeniv.linux.org.uk>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: jack@suse.cz, hch@lst.de, brauner@kernel.org, axboe@kernel.dk,
linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org,
yi.zhang@huawei.com, yangerkun@huawei.com,
"yukuai (C)" <yukuai3@huawei.com>
Subject: Re: [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device
Date: Tue, 9 Apr 2024 05:26:43 +0100 [thread overview]
Message-ID: <20240409042643.GP538574@ZenIV> (raw)
In-Reply-To: <8f414bc5-44c6-fe71-4d04-6aef3de8c5e3@huaweicloud.com>
On Sun, Apr 07, 2024 at 11:21:56AM +0800, Yu Kuai wrote:
> Hi,
>
> 在 2024/04/07 11:06, Al Viro 写道:
> > On Sun, Apr 07, 2024 at 10:34:56AM +0800, Yu Kuai wrote:
> >
> > > Other than raw block_device fops, other filesystems can use the opened
> > > bdev_file directly for iomap and buffer_head, and they actually don't
> > > need to reference block_device anymore. The point here is that whether
> >
> > What do you mean, "reference"? The counting reference is to opened
> > file; ->s_bdev is a cached pointer to associated struct block_device,
> > and neither it nor pointers in buffer_head are valid past the moment
> > when you close the file. Storing (non-counting) pointers to struct
> > file in struct buffer_head is not different in that respect - they
> > are *still* only valid while the "master" reference is held.
> >
> > Again, what's the point of storing struct file * in struct buffer_head
> > or struct iomap? In any instances of those structures?
>
> Perhaps this is what you missed, like the title of this set, in order to
> remove direct acceess of bdev->bd_inode from fs/buffer, we must store
> bdev_file in buffer_head and iomap, and 'bdev->bd_inode' is replaced
> with 'file_inode(bdev)' now.
BTW, what does that have to do with iomap? All it passes ->bdev to is
1) bio_alloc()
2) bio_alloc_bioset()
3) bio_init()
4) bdev_logical_block_size()
5) bdev_iter_is_aligned()
6) bdev_fua()
7) bdev_write_cache()
None of those goes anywhere near fs/buffer.c or uses ->bd_inode, AFAICS.
Again, what's the point? It feels like you are trying to replace *all*
uses of struct block_device with struct file, just because.
If that's what's going on, please don't. Using struct file instead
of that bdev_handle crap - sure, makes perfect sense. But shoving it
down into struct bio really, really does not.
I'd suggest to start with adding ->bd_mapping as the first step and
converting the places where mapping is all we want to using that.
Right at the beginning of your series. Then let's see what gets
left.
And leave ->bd_inode there for now; don't blindly replace it with
->bd_mapping->host everywhere. It's much easier to grep for.
The point of the exercise is to find what do we really need ->bd_inode
for and what primitives are missing, not getting rid of a bad word...
next prev parent reply other threads:[~2024-04-09 4:26 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-06 9:09 [PATCH vfs.all 00/26] fs & block: remove bdev->bd_inode Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 01/26] block: move two helpers into bdev.c Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 02/26] block: remove sync_blockdev_nowait() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 03/26] block: remove sync_blockdev_range() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 04/26] block: prevent direct access of bd_inode Yu Kuai
2024-04-07 2:22 ` Al Viro
2024-04-07 2:37 ` Yu Kuai
2024-04-11 11:12 ` Christian Brauner
2024-04-06 9:09 ` [PATCH vfs.all 05/26] block: add a helper bdev_read_folio() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 06/26] bcachefs: remove dead function bdev_sectors() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 07/26] cramfs: prevent direct access of bd_inode Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 08/26] erofs: " Yu Kuai
2024-04-07 4:05 ` Al Viro
2024-04-07 4:08 ` Al Viro
2024-04-11 16:13 ` Gao Xiang
2024-04-12 1:14 ` Yu Kuai
2024-04-25 19:56 ` Al Viro
2024-04-25 19:57 ` [PATCH 1/6] erofs: switch erofs_bread() to passing offset instead of block number Al Viro
2024-04-29 3:01 ` Gao Xiang
2024-04-25 19:58 ` [PATCH 2/6] erofs_buf: store address_space instead of inode Al Viro
2024-04-29 3:01 ` Gao Xiang
2024-04-25 19:58 ` erofs: mechanically convert erofs_read_metabuf() to offsets Al Viro
2024-04-25 19:59 ` [PATCH 4/6] erofs: don't align offset for erofs_read_metabuf() (simple cases) Al Viro
2024-04-25 19:59 ` [PATCH 5/6] erofs: don't round offset down for erofs_read_metabuf() Al Viro
2024-04-25 20:00 ` [PATCH 6/6] z_erofs_pcluster_begin(): don't bother with rounding position down Al Viro
2024-04-26 5:32 ` Gao Xiang
2024-05-03 4:15 ` Al Viro
2024-05-03 13:01 ` Gao Xiang
2024-05-17 2:24 ` Gao Xiang
2024-04-25 20:08 ` [PATCH vfs.all 08/26] erofs: prevent direct access of bd_inode Al Viro
2024-04-25 21:56 ` Gao Xiang
2024-04-25 22:28 ` Al Viro
2024-04-25 23:11 ` Gao Xiang
2024-04-25 23:22 ` Gao Xiang
2024-04-06 9:09 ` [PATCH vfs.all 09/26] nilfs2: " Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 10/26] gfs2: " Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 11/26] btrfs: " Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 12/26] ext4: remove block_device_ejected() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 13/26] ext4: prevent direct access of bd_inode Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 14/26] jbd2: " Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 15/26] s390/dasd: use bdev api in dasd_format() Yu Kuai
2024-04-16 1:35 ` Al Viro
2024-04-16 8:47 ` Alexander Gordeev
2024-04-17 12:47 ` Stefan Haberland
2024-04-28 18:58 ` Al Viro
2024-04-28 23:23 ` Al Viro
2024-04-29 14:41 ` Stefan Haberland
2024-04-30 0:30 ` Al Viro
2024-04-30 11:35 ` Stefan Haberland
2024-04-06 9:09 ` [PATCH vfs.all 16/26] bcache: prevent direct access of bd_inode Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 17/26] block2mtd: " Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 18/26] scsi: use bdev helper in scsi_bios_ptable() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 19/26] dm-vdo: convert to use bdev_file Yu Kuai
2024-04-10 10:56 ` Jan Kara
2024-04-10 17:26 ` Matthew Sakai
2024-04-10 17:40 ` Al Viro
2024-04-10 18:59 ` Matthew Sakai
2024-04-11 11:12 ` Christian Brauner
2024-04-06 9:09 ` [PATCH vfs.all 20/26] block: factor out a helper init_bdev_file() Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 21/26] block: fix module reference leakage from bdev_open_by_dev error path Yu Kuai
2024-04-11 9:16 ` (subset) " Christian Brauner
2024-04-06 9:09 ` [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device Yu Kuai
2024-04-06 19:42 ` Al Viro
2024-04-06 20:29 ` Al Viro
2024-04-07 1:18 ` Yu Kuai
2024-04-07 1:51 ` Al Viro
2024-04-07 2:34 ` Yu Kuai
2024-04-07 3:06 ` Al Viro
2024-04-07 3:21 ` Yu Kuai
2024-04-07 4:57 ` Al Viro
2024-04-07 5:11 ` Al Viro
2024-04-07 5:21 ` Al Viro
2024-04-11 15:22 ` Matthew Wilcox
2024-04-09 4:26 ` Al Viro [this message]
2024-04-09 4:53 ` Al Viro
2024-04-09 6:22 ` Yu Kuai
2024-04-10 10:59 ` Jan Kara
2024-04-10 22:34 ` Al Viro
2024-04-11 11:56 ` Christian Brauner
2024-04-11 14:04 ` Al Viro
2024-04-11 14:49 ` Al Viro
2024-04-11 14:53 ` [PATCH 01/11] block_device: add a pointer to struct address_space (page cache of bdev) Al Viro
2024-04-11 14:53 ` [PATCH 02/11] use ->bd_mapping instead of ->bd_inode->i_mapping Al Viro
2024-04-11 14:53 ` [PATCH 03/11] grow_dev_folio(): we only want ->bd_inode->i_mapping there Al Viro
2024-04-11 14:59 ` Matthew Wilcox
2024-04-11 14:53 ` [PATCH 04/11] gfs2: more obvious initializations of mapping->host Al Viro
2024-04-11 14:53 ` [PATCH 05/11] blkdev_write_iter(): saner way to get inode and bdev Al Viro
2024-04-11 14:53 ` [PATCH 06/11] blk_ioctl_{discard,zeroout}(): we only want ->bd_inode->i_mapping here Al Viro
2024-04-11 14:53 ` [PATCH 07/11] ext4: remove block_device_ejected() Al Viro
2024-04-11 14:53 ` [PATCH 08/11] block: move two helpers into bdev.c Al Viro
2024-04-11 14:53 ` [PATCH 09/11] dm-vdo: use bdev_nr_bytes(bdev) instead of i_size_read(bdev->bd_inode) Al Viro
2024-04-11 18:04 ` Matthew Sakai
2024-04-11 14:53 ` [PATCH 10/11] bcachefs: remove dead function bdev_sectors() Al Viro
2024-04-11 14:53 ` [PATCH 11/11] block2mtd: prevent direct access of bd_inode Al Viro
2024-04-17 11:05 ` [PATCH 01/11] block_device: add a pointer to struct address_space (page cache of bdev) Christian Brauner
2024-04-12 1:38 ` [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device Yu Kuai
2024-04-12 2:59 ` Al Viro
2024-04-12 4:41 ` Al Viro
2024-04-12 7:13 ` Al Viro
2024-04-12 9:21 ` Christian Brauner
2024-04-12 11:29 ` Al Viro
2024-04-13 15:25 ` Christian Brauner
2024-04-15 20:45 ` Al Viro
2024-04-16 6:32 ` Al Viro
2024-04-17 4:35 ` [PATCH][RFC] set_blocksize() in pktcdvd (was Re: [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device) Al Viro
2024-04-17 13:43 ` [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device Jan Kara
2024-04-17 15:23 ` Al Viro
2024-04-17 20:45 ` [RFC] set_blocksize() in kernel/power/swap.c (was Re: [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device) Al Viro
2024-04-09 9:00 ` [PATCH vfs.all 22/26] block: stash a bdev_file to read/write raw blcok_device Christian Brauner
2024-04-09 10:23 ` Christian Brauner
2024-04-09 11:53 ` Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 23/26] iomap: add helpers helpers to get and set bdev Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 24/26] iomap: convert to use bdev_file Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 25/26] buffer: add helpers to get and set bdev Yu Kuai
2024-04-06 9:09 ` [PATCH vfs.all 26/26] buffer: convert to use bdev_file Yu Kuai
2024-04-07 2:20 ` [PATCH vfs.all 00/26] fs & block: remove bdev->bd_inode Yu Kuai
2024-04-08 14:05 ` Jan Kara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240409042643.GP538574@ZenIV \
--to=viro@zeniv.linux.org.uk \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
--cc=yukuai1@huaweicloud.com \
--cc=yukuai3@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).