diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index 0085aa8503..6111f0afca 100644 --- a/include/linux/vfs_compat.h +++ b/include/linux/vfs_compat.h @@ -74,10 +74,13 @@ truncate_setsize(struct inode *ip, loff_t new) * 4.12 - x.y, super_setup_bdi_name() new interface. */ #if defined(HAVE_SUPER_SETUP_BDI_NAME) +extern atomic_long_t zfs_bdi_seq; + static inline int zpl_bdi_setup(struct super_block *sb, char *name) { - return (super_setup_bdi_name(sb, name)); + return super_setup_bdi_name(sb, "%.28s-%ld", name, + atomic_long_inc_return(&zfs_bdi_seq)); } static inline void zpl_bdi_destroy(struct super_block *sb) @@ -144,7 +147,6 @@ static inline int zpl_bdi_setup(struct super_block *sb, char *name) { struct backing_dev_info *bdi; - char tmp[32]; int error; bdi = kmem_zalloc(sizeof (struct backing_dev_info), KM_SLEEP); @@ -157,8 +159,7 @@ zpl_bdi_setup(struct super_block *sb, char *name) return (error); } - sprintf(tmp, "%.28s%s", name, "-%d"); - error = bdi_register(bdi, NULL, tmp, + error = bdi_register(bdi, NULL, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); if (error) { bdi_destroy(bdi); diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c index 15cadcad51..6d4761607b 100644 --- a/module/zfs/zfs_vfsops.c +++ b/module/zfs/zfs_vfsops.c @@ -1568,8 +1568,7 @@ zfsvfs_teardown(zfsvfs_t *zfsvfs, boolean_t unmounting) return (0); } -#if !defined(HAVE_SUPER_SETUP_BDI_NAME) && \ - !defined(HAVE_2ARGS_BDI_SETUP_AND_REGISTER) && \ +#if !defined(HAVE_2ARGS_BDI_SETUP_AND_REGISTER) && \ !defined(HAVE_3ARGS_BDI_SETUP_AND_REGISTER) atomic_long_t zfs_bdi_seq = ATOMIC_LONG_INIT(0); #endif