Re: [PATCH 5/9] block: introduce holder ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 16, 2023 at 07:02:31PM +0800, Ming Lei wrote:
> On Fri, May 05, 2023 at 01:51:28PM -0400, Christoph Hellwig wrote:
> > Add a new blk_holder_ops structure, which is passed to blkdev_get_by_* and
> > installed in the block_device for exclusive claims.  It will be used to
> > allow the block layer to call back into the user of the block device for
> > thing like notification of a removed device or a device resize.
> > 
> > Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> > ---
> 
> ...
> 
> > @@ -542,7 +543,8 @@ static void bd_clear_claiming(struct block_device *whole, void *holder)
> >   * Finish exclusive open of a block device. Mark the device as exlusively
> >   * open by the holder and wake up all waiters for exclusive open to finish.
> >   */
> > -static void bd_finish_claiming(struct block_device *bdev, void *holder)
> > +static void bd_finish_claiming(struct block_device *bdev, void *holder,
> > +		const struct blk_holder_ops *hops)
> >  {
> >  	struct block_device *whole = bdev_whole(bdev);
> >  
> > @@ -555,7 +557,10 @@ static void bd_finish_claiming(struct block_device *bdev, void *holder)
> >  	whole->bd_holders++;
> >  	whole->bd_holder = bd_may_claim;
> >  	bdev->bd_holders++;
> > +	mutex_lock(&bdev->bd_holder_lock);
> >  	bdev->bd_holder = holder;
> > +	bdev->bd_holder_ops = hops;
> > +	mutex_unlock(&bdev->bd_holder_lock);
> >  	bd_clear_claiming(whole, holder);
> >  	mutex_unlock(&bdev_lock);
> >  }
> 
> I guess the holder ops may be override in case of multiple claim, can
> this be one problem from the holder ops user viewpoint? Or
> warn_on_once(bdev->bd_holder_ops && bdev->bd_holder_ops != hops) is needed here?

<shrug> I'd have thought bd_may_claim would suffice for detecting
multiple claims based on its "bd_holder != NULL" test?

Though I suppose an explicit test for bd_holder_ops != NULL would
prevent multiple claims if all the claims had NULL holders.

--D

> 
> Thanks,
> Ming
> 



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux