[PATCH 43/44] block: merge struct block_device and struct hd_struct
Christoph Hellwig
hch at lst.de
Fri Nov 27 10:47:09 EST 2020
On Fri, Nov 27, 2020 at 02:19:01PM +0100, Jan Kara wrote:
> The percpu refcount is long gone after the series refactoring...
True.
> > @@ -939,13 +910,13 @@ void blk_request_module(dev_t devt)
> > */
> > struct block_device *bdget_disk(struct gendisk *disk, int partno)
> > {
> > - struct hd_struct *part;
> > struct block_device *bdev = NULL;
> >
> > - part = disk_get_part(disk, partno);
> > - if (part)
> > - bdev = bdget_part(part);
> > - disk_put_part(part);
> > + rcu_read_lock();
> > + bdev = __disk_get_part(disk, partno);
> > + if (bdev)
> > + bdgrab(bdev);
>
> Again I think you need to accommodate for bdgrab() returning NULL here when
> we race with partition destruction...
For that we need to allow bdgrab to return NULL first, but otherwise
this seems like the right way.
More information about the linux-mtd
mailing list