On Thu 26-11-20 14:04:06, Christoph Hellwig wrote: > Don't play tricks with slab constructors as bdev structures tends to not > get reused very much, and this makes the code a lot less error prone. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Acked-by: Tejun Heo <tj@xxxxxxxxxx> Looks good. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/block_dev.c | 22 +++++++++------------- > 1 file changed, 9 insertions(+), 13 deletions(-) > > diff --git a/fs/block_dev.c b/fs/block_dev.c > index f180ac0e87844f..58e8532d8580a1 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -784,20 +784,11 @@ static void bdev_free_inode(struct inode *inode) > kmem_cache_free(bdev_cachep, BDEV_I(inode)); > } > > -static void init_once(void *foo) > +static void init_once(void *data) > { > - struct bdev_inode *ei = (struct bdev_inode *) foo; > - struct block_device *bdev = &ei->bdev; > + struct bdev_inode *ei = data; > > - memset(bdev, 0, sizeof(*bdev)); > - mutex_init(&bdev->bd_mutex); > -#ifdef CONFIG_SYSFS > - INIT_LIST_HEAD(&bdev->bd_holder_disks); > -#endif > - bdev->bd_bdi = &noop_backing_dev_info; > inode_init_once(&ei->vfs_inode); > - /* Initialize mutex for freeze. */ > - mutex_init(&bdev->bd_fsfreeze_mutex); > } > > static void bdev_evict_inode(struct inode *inode) > @@ -873,12 +864,17 @@ struct block_device *bdev_alloc(struct gendisk *disk, u8 partno) > mapping_set_gfp_mask(&inode->i_data, GFP_USER); > > bdev = I_BDEV(inode); > + memset(bdev, 0, sizeof(*bdev)); > + mutex_init(&bdev->bd_mutex); > + mutex_init(&bdev->bd_fsfreeze_mutex); > spin_lock_init(&bdev->bd_size_lock); > bdev->bd_disk = disk; > bdev->bd_partno = partno; > - bdev->bd_super = NULL; > bdev->bd_inode = inode; > - bdev->bd_part_count = 0; > + bdev->bd_bdi = &noop_backing_dev_info; > +#ifdef CONFIG_SYSFS > + INIT_LIST_HEAD(&bdev->bd_holder_disks); > +#endif > return bdev; > } > > -- > 2.29.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR