On Fri, Nov 27, 2020 at 01:53:41PM +0100, Jan Kara wrote: > On Thu 26-11-20 14:04:19, Christoph Hellwig wrote: > > Switch the partition iter infrastructure to iterate over block_device > > references instead of hd_struct ones mostly used to get at the > > block_device. > > > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > The patch mostly looks good. Two comments below. > > > diff --git a/block/genhd.c b/block/genhd.c > > index 28299b24173be1..b58595f2ca33b1 100644 > > --- a/block/genhd.c > > +++ b/block/genhd.c > > @@ -233,7 +233,7 @@ EXPORT_SYMBOL_GPL(disk_part_iter_init); > > * CONTEXT: > > * Don't care. > > */ > > -struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter) > > +struct block_device *disk_part_iter_next(struct disk_part_iter *piter) > > { > > struct disk_part_tbl *ptbl; > > int inc, end; > > There's: > > /* put the last partition */ > disk_put_part(piter->part); > piter->part = NULL; > > at the beginning of disk_part_iter_next() which also needs switching to > bdput(), doesn't it? That is switched to call disk_part_iter_exit in patch 13. > > > @@ -271,8 +271,7 @@ struct hd_struct *disk_part_iter_next(struct disk_part_iter *piter) > > piter->idx == 0)) > > continue; > > > > - get_device(part_to_dev(part->bd_part)); > > - piter->part = part->bd_part; > > + piter->part = bdgrab(part); > > bdgrab() could return NULL if we are racing with delete_partition() so I > think we need to take care of that. bdgrab never retuns NULL..