Re: [PATCH 01/32] block: Provide blkdev_get_handle_* functions
Jan Kara <[email protected]>
| Newsgroups | gmane.linux.kernel.drbd.devel,gmane.linux.kernel.device-mapper.devel,gmane.linux.scsi.target.devel,gmane.linux.drivers.mtd,gmane.comp.file-systems.nilfs.user,gmane.linux.scsi,gmane.comp.emulators.xen.devel,gmane.linux.power-management.general,gmane.comp.file-systems.reiserfs.general,gmane.linux.block,gmane.linux.kernel.bcache.devel,gmane.linux.raid,gmane.linux.nfs,gmane.comp.file-systems.ext4,gmane.linux.kernel.mm,gmane.linux.file-systems.f2fs,gmane.comp.file-systems.ocfs2.devel,gmane.linux.file-systems,gmane.comp.file-systems.btrfs |
|---|---|
| Message-ID | <20230705161225.cwig5a3mo6oz7lew@quack3> |
On Tue 04-07-23 07:06:26, Bart Van Assche wrote:
> On 7/4/23 05:21, Jan Kara wrote:
> > +struct bdev_handle {
> > + struct block_device *bdev;
> > + void *holder;
> > +};
>
> Please explain in the patch description why a holder pointer is introduced
> in struct bdev_handle and how it relates to the bd_holder pointer in struct
> block_device. Is one of the purposes of this patch series perhaps to add
> support for multiple holders per block device?
No. The reason for adding holder to struct bdev_handle is that it is an
argument blkdev_put() needs. Currently, every user of blkdev_put() has to
remember what it has passed as 'holder' to blkdev_get_by_*() call and pass
that to blkdev_put(). With struct bdev_handle this will happen
automatically. This is already explained in the changelog of this patch:
"Create struct bdev_handle that contains all parameters that need to be
passed to blkdev_put()..."
If it was only about holder, the intrusive patches would not be warranted
but as the description also says:
"This will eventually allow us to pass one more argument to blkdev_put()
without too much hassle."
Because we will additionaly need to propagate the 'mode' argument used at
open to blkdev_put().
Honza
--
Jan Kara <jack-IBi9RG/[email protected]>
SUSE Labs, CR