There is no need to export blockdev_superblock because we can just use the magic value of the block device cache super block, which is already in place, BDEVFS_MAGIC. So just check for that. This let's us remove the export of blockdev_superblock and also let's this block dev cache scale as it wishes internally. For instance in the future we may have different super block for each block device. Right now it is all shared on one super block. Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> --- block/bdev.c | 1 - include/linux/fs.h | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index 21c63bfef323..91477c3849d2 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -379,7 +379,6 @@ static struct file_system_type bd_type = { }; struct super_block *blockdev_superblock __read_mostly; -EXPORT_SYMBOL_GPL(blockdev_superblock); void __init bdev_cache_init(void) { diff --git a/include/linux/fs.h b/include/linux/fs.h index 0b54ac1d331b..948a384af8a3 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -43,6 +43,7 @@ #include <linux/cred.h> #include <linux/mnt_idmapping.h> #include <linux/slab.h> +#include <uapi/linux/magic.h> #include <asm/byteorder.h> #include <uapi/linux/fs.h> @@ -2388,10 +2389,9 @@ extern struct kmem_cache *names_cachep; #define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL) #define __putname(name) kmem_cache_free(names_cachep, (void *)(name)) -extern struct super_block *blockdev_superblock; static inline bool sb_is_blkdev_sb(struct super_block *sb) { - return IS_ENABLED(CONFIG_BLOCK) && sb == blockdev_superblock; + return IS_ENABLED(CONFIG_BLOCK) && sb->s_magic == BDEVFS_MAGIC; } void emergency_thaw_all(void); -- 2.39.2