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 <[email protected]>
SUSE Labs, CR