On Thu 16-04-20 09:15:17, Christoph Hellwig wrote: > Split out a new bdi_set_owner helper to set the owner, and move the policy > for creating the bdi name back into genhd.c, where it belongs. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> Fine by me. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > block/genhd.c | 8 +++++--- > include/linux/backing-dev.h | 2 +- > mm/backing-dev.c | 12 ++---------- > 3 files changed, 8 insertions(+), 14 deletions(-) > > diff --git a/block/genhd.c b/block/genhd.c > index 06b642b23a07..7d10cfc38c70 100644 > --- a/block/genhd.c > +++ b/block/genhd.c > @@ -840,13 +840,15 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk, > disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO; > disk->flags |= GENHD_FL_NO_PART_SCAN; > } else { > + struct backing_dev_info *bdi = disk->queue->backing_dev_info; > + struct device *dev = disk_to_dev(disk); > int ret; > > /* Register BDI before referencing it from bdev */ > - disk_to_dev(disk)->devt = devt; > - ret = bdi_register_owner(disk->queue->backing_dev_info, > - disk_to_dev(disk)); > + dev->devt = devt; > + ret = bdi_register(bdi, "%u:%u", MAJOR(devt), MINOR(devt)); > WARN_ON(ret); > + bdi_set_owner(bdi, dev); > blk_register_region(disk_devt(disk), disk->minors, NULL, > exact_match, exact_lock, disk); > } > diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h > index c9ad5c3b7b4b..4098ed6ba6b4 100644 > --- a/include/linux/backing-dev.h > +++ b/include/linux/backing-dev.h > @@ -33,7 +33,7 @@ int bdi_register(struct backing_dev_info *bdi, const char *fmt, ...); > __printf(2, 0) > int bdi_register_va(struct backing_dev_info *bdi, const char *fmt, > va_list args); > -int bdi_register_owner(struct backing_dev_info *bdi, struct device *owner); > +void bdi_set_owner(struct backing_dev_info *bdi, struct device *owner); > void bdi_unregister(struct backing_dev_info *bdi); > > struct backing_dev_info *bdi_alloc_node(gfp_t gfp_mask, int node_id); > diff --git a/mm/backing-dev.c b/mm/backing-dev.c > index a7eb91146c9c..1ba9a7b30933 100644 > --- a/mm/backing-dev.c > +++ b/mm/backing-dev.c > @@ -982,20 +982,12 @@ int bdi_register(struct backing_dev_info *bdi, const char *fmt, ...) > } > EXPORT_SYMBOL(bdi_register); > > -int bdi_register_owner(struct backing_dev_info *bdi, struct device *owner) > +void bdi_set_owner(struct backing_dev_info *bdi, struct device *owner) > { > - int rc; > - > - rc = bdi_register(bdi, "%u:%u", MAJOR(owner->devt), MINOR(owner->devt)); > - if (rc) > - return rc; > - /* Leaking owner reference... */ > - WARN_ON(bdi->owner); > + WARN_ON_ONCE(bdi->owner); > bdi->owner = owner; > get_device(owner); > - return 0; > } > -EXPORT_SYMBOL(bdi_register_owner); > > /* > * Remove bdi from bdi_list, and ensure that it is no longer visible > -- > 2.25.1 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR