fs: deduplicate noop_backing_dev_info

hugetlbfs, kernfs and dlmfs can simply use noop_backing_dev_info instead
of creating a local duplicate.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
Christoph Hellwig 2015-01-14 10:42:30 +01:00 committed by Jens Axboe
parent ec6f34e5b5
commit a7a2c680a2
5 changed files with 4 additions and 42 deletions

View File

@ -62,12 +62,6 @@ static inline struct hugetlbfs_inode_info *HUGETLBFS_I(struct inode *inode)
return container_of(inode, struct hugetlbfs_inode_info, vfs_inode); return container_of(inode, struct hugetlbfs_inode_info, vfs_inode);
} }
static struct backing_dev_info hugetlbfs_backing_dev_info = {
.name = "hugetlbfs",
.ra_pages = 0, /* No readahead */
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK,
};
int sysctl_hugetlb_shm_group; int sysctl_hugetlb_shm_group;
enum { enum {
@ -498,7 +492,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,
lockdep_set_class(&inode->i_mapping->i_mmap_rwsem, lockdep_set_class(&inode->i_mapping->i_mmap_rwsem,
&hugetlbfs_i_mmap_rwsem_key); &hugetlbfs_i_mmap_rwsem_key);
inode->i_mapping->a_ops = &hugetlbfs_aops; inode->i_mapping->a_ops = &hugetlbfs_aops;
inode->i_mapping->backing_dev_info =&hugetlbfs_backing_dev_info; inode->i_mapping->backing_dev_info = &noop_backing_dev_info;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
inode->i_mapping->private_data = resv_map; inode->i_mapping->private_data = resv_map;
info = HUGETLBFS_I(inode); info = HUGETLBFS_I(inode);
@ -1032,10 +1026,6 @@ static int __init init_hugetlbfs_fs(void)
return -ENOTSUPP; return -ENOTSUPP;
} }
error = bdi_init(&hugetlbfs_backing_dev_info);
if (error)
return error;
error = -ENOMEM; error = -ENOMEM;
hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache", hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache",
sizeof(struct hugetlbfs_inode_info), sizeof(struct hugetlbfs_inode_info),
@ -1071,7 +1061,6 @@ static int __init init_hugetlbfs_fs(void)
out: out:
kmem_cache_destroy(hugetlbfs_inode_cachep); kmem_cache_destroy(hugetlbfs_inode_cachep);
out2: out2:
bdi_destroy(&hugetlbfs_backing_dev_info);
return error; return error;
} }
@ -1091,7 +1080,6 @@ static void __exit exit_hugetlbfs_fs(void)
for_each_hstate(h) for_each_hstate(h)
kern_unmount(hugetlbfs_vfsmount[i++]); kern_unmount(hugetlbfs_vfsmount[i++]);
unregister_filesystem(&hugetlbfs_fs_type); unregister_filesystem(&hugetlbfs_fs_type);
bdi_destroy(&hugetlbfs_backing_dev_info);
} }
module_init(init_hugetlbfs_fs) module_init(init_hugetlbfs_fs)

View File

@ -24,12 +24,6 @@ static const struct address_space_operations kernfs_aops = {
.write_end = simple_write_end, .write_end = simple_write_end,
}; };
static struct backing_dev_info kernfs_bdi = {
.name = "kernfs",
.ra_pages = 0, /* No readahead */
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK,
};
static const struct inode_operations kernfs_iops = { static const struct inode_operations kernfs_iops = {
.permission = kernfs_iop_permission, .permission = kernfs_iop_permission,
.setattr = kernfs_iop_setattr, .setattr = kernfs_iop_setattr,
@ -40,12 +34,6 @@ static const struct inode_operations kernfs_iops = {
.listxattr = kernfs_iop_listxattr, .listxattr = kernfs_iop_listxattr,
}; };
void __init kernfs_inode_init(void)
{
if (bdi_init(&kernfs_bdi))
panic("failed to init kernfs_bdi");
}
static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn) static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn)
{ {
static DEFINE_MUTEX(iattr_mutex); static DEFINE_MUTEX(iattr_mutex);
@ -298,7 +286,7 @@ static void kernfs_init_inode(struct kernfs_node *kn, struct inode *inode)
kernfs_get(kn); kernfs_get(kn);
inode->i_private = kn; inode->i_private = kn;
inode->i_mapping->a_ops = &kernfs_aops; inode->i_mapping->a_ops = &kernfs_aops;
inode->i_mapping->backing_dev_info = &kernfs_bdi; inode->i_mapping->backing_dev_info = &noop_backing_dev_info;
inode->i_op = &kernfs_iops; inode->i_op = &kernfs_iops;
set_default_inode_attr(inode, kn->mode); set_default_inode_attr(inode, kn->mode);

View File

@ -88,7 +88,6 @@ int kernfs_iop_removexattr(struct dentry *dentry, const char *name);
ssize_t kernfs_iop_getxattr(struct dentry *dentry, const char *name, void *buf, ssize_t kernfs_iop_getxattr(struct dentry *dentry, const char *name, void *buf,
size_t size); size_t size);
ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size); ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size);
void kernfs_inode_init(void);
/* /*
* dir.c * dir.c

View File

@ -246,5 +246,4 @@ void __init kernfs_init(void)
kernfs_node_cache = kmem_cache_create("kernfs_node_cache", kernfs_node_cache = kmem_cache_create("kernfs_node_cache",
sizeof(struct kernfs_node), sizeof(struct kernfs_node),
0, SLAB_PANIC, NULL); 0, SLAB_PANIC, NULL);
kernfs_inode_init();
} }

View File

@ -390,12 +390,6 @@ clear_fields:
ip->ip_conn = NULL; ip->ip_conn = NULL;
} }
static struct backing_dev_info dlmfs_backing_dev_info = {
.name = "ocfs2-dlmfs",
.ra_pages = 0, /* No readahead */
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK,
};
static struct inode *dlmfs_get_root_inode(struct super_block *sb) static struct inode *dlmfs_get_root_inode(struct super_block *sb)
{ {
struct inode *inode = new_inode(sb); struct inode *inode = new_inode(sb);
@ -404,7 +398,7 @@ static struct inode *dlmfs_get_root_inode(struct super_block *sb)
if (inode) { if (inode) {
inode->i_ino = get_next_ino(); inode->i_ino = get_next_ino();
inode_init_owner(inode, NULL, mode); inode_init_owner(inode, NULL, mode);
inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info; inode->i_mapping->backing_dev_info = &noop_backing_dev_info;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
inc_nlink(inode); inc_nlink(inode);
@ -428,7 +422,7 @@ static struct inode *dlmfs_get_inode(struct inode *parent,
inode->i_ino = get_next_ino(); inode->i_ino = get_next_ino();
inode_init_owner(inode, parent, mode); inode_init_owner(inode, parent, mode);
inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info; inode->i_mapping->backing_dev_info = &noop_backing_dev_info;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
ip = DLMFS_I(inode); ip = DLMFS_I(inode);
@ -643,10 +637,6 @@ static int __init init_dlmfs_fs(void)
int status; int status;
int cleanup_inode = 0, cleanup_worker = 0; int cleanup_inode = 0, cleanup_worker = 0;
status = bdi_init(&dlmfs_backing_dev_info);
if (status)
return status;
dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache", dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache",
sizeof(struct dlmfs_inode_private), sizeof(struct dlmfs_inode_private),
0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT| 0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|
@ -673,7 +663,6 @@ bail:
kmem_cache_destroy(dlmfs_inode_cache); kmem_cache_destroy(dlmfs_inode_cache);
if (cleanup_worker) if (cleanup_worker)
destroy_workqueue(user_dlm_worker); destroy_workqueue(user_dlm_worker);
bdi_destroy(&dlmfs_backing_dev_info);
} else } else
printk("OCFS2 User DLM kernel interface loaded\n"); printk("OCFS2 User DLM kernel interface loaded\n");
return status; return status;
@ -693,7 +682,6 @@ static void __exit exit_dlmfs_fs(void)
rcu_barrier(); rcu_barrier();
kmem_cache_destroy(dlmfs_inode_cache); kmem_cache_destroy(dlmfs_inode_cache);
bdi_destroy(&dlmfs_backing_dev_info);
} }
MODULE_AUTHOR("Oracle"); MODULE_AUTHOR("Oracle");