Re: [PATCH 1/7] block: export blkdev_reread_part() and __blkdev_reread_part()

Jarod Wilson
2015-04-08T15:27:48Z

On Wed, Apr 08, 2015 at 05:03:25PM +0200, Peter Zijlstra wrote:
> On Wed, Apr 08, 2015 at 10:50:56PM +0800, Ming Lei wrote:
> > > +/*
> > > + * This is an exported API for the block driver, and will not
> > > + * acquire bd_mutex, leaving it up to the caller to handle
> > > + * any necessary locking.
> >
> > Actually, the function is introduced and should be used in case
> > that bd_mutex has been held already, such as clearing fd in
> > loop release().
> >
> > > + */
> > > +int __blkdev_reread_part(struct block_device *bdev)
> > > {
> > > struct gendisk *disk = bdev->bd_disk;
> > >
>
> lockdep_assert_held(&bdev->bd_mutex);
>
> is an excellent means of avoiding that comment and verifying its
> actually true :-)

Ah, yes, that was actually suggested by Christoph as well, I was too hasty
shoving something back out the door on multiple counts.

> > > + */
> > > +int blkdev_reread_part(struct block_device *bdev)
> > > +{
> > > + int res;
> > > +
> > > if (!mutex_trylock(&bdev->bd_mutex))
> > > return -EBUSY;
>
> Is that really needed? It seems rather poor form.

It goes away later in the series and gets converted to a straight
mutex_lock().

--
Jarod Wilson
jarod@redhat.com