Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Christoph Hellwig and committed by
Jens Axboe
a7a2c680 ec6f34e5

+4 -42
+1 -13
fs/hugetlbfs/inode.c
··· 62 62 return container_of(inode, struct hugetlbfs_inode_info, vfs_inode); 63 63 } 64 64 65 - static struct backing_dev_info hugetlbfs_backing_dev_info = { 66 - .name = "hugetlbfs", 67 - .ra_pages = 0, /* No readahead */ 68 - .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, 69 - }; 70 - 71 65 int sysctl_hugetlb_shm_group; 72 66 73 67 enum { ··· 492 498 lockdep_set_class(&inode->i_mapping->i_mmap_rwsem, 493 499 &hugetlbfs_i_mmap_rwsem_key); 494 500 inode->i_mapping->a_ops = &hugetlbfs_aops; 495 - inode->i_mapping->backing_dev_info =&hugetlbfs_backing_dev_info; 501 + inode->i_mapping->backing_dev_info = &noop_backing_dev_info; 496 502 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; 497 503 inode->i_mapping->private_data = resv_map; 498 504 info = HUGETLBFS_I(inode); ··· 1026 1032 return -ENOTSUPP; 1027 1033 } 1028 1034 1029 - error = bdi_init(&hugetlbfs_backing_dev_info); 1030 - if (error) 1031 - return error; 1032 - 1033 1035 error = -ENOMEM; 1034 1036 hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache", 1035 1037 sizeof(struct hugetlbfs_inode_info), ··· 1061 1071 out: 1062 1072 kmem_cache_destroy(hugetlbfs_inode_cachep); 1063 1073 out2: 1064 - bdi_destroy(&hugetlbfs_backing_dev_info); 1065 1074 return error; 1066 1075 } 1067 1076 ··· 1080 1091 for_each_hstate(h) 1081 1092 kern_unmount(hugetlbfs_vfsmount[i++]); 1082 1093 unregister_filesystem(&hugetlbfs_fs_type); 1083 - bdi_destroy(&hugetlbfs_backing_dev_info); 1084 1094 } 1085 1095 1086 1096 module_init(init_hugetlbfs_fs)
+1 -13
fs/kernfs/inode.c
··· 24 24 .write_end = simple_write_end, 25 25 }; 26 26 27 - static struct backing_dev_info kernfs_bdi = { 28 - .name = "kernfs", 29 - .ra_pages = 0, /* No readahead */ 30 - .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, 31 - }; 32 - 33 27 static const struct inode_operations kernfs_iops = { 34 28 .permission = kernfs_iop_permission, 35 29 .setattr = kernfs_iop_setattr, ··· 33 39 .getxattr = kernfs_iop_getxattr, 34 40 .listxattr = kernfs_iop_listxattr, 35 41 }; 36 - 37 - void __init kernfs_inode_init(void) 38 - { 39 - if (bdi_init(&kernfs_bdi)) 40 - panic("failed to init kernfs_bdi"); 41 - } 42 42 43 43 static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn) 44 44 { ··· 286 298 kernfs_get(kn); 287 299 inode->i_private = kn; 288 300 inode->i_mapping->a_ops = &kernfs_aops; 289 - inode->i_mapping->backing_dev_info = &kernfs_bdi; 301 + inode->i_mapping->backing_dev_info = &noop_backing_dev_info; 290 302 inode->i_op = &kernfs_iops; 291 303 292 304 set_default_inode_attr(inode, kn->mode);
-1
fs/kernfs/kernfs-internal.h
··· 88 88 ssize_t kernfs_iop_getxattr(struct dentry *dentry, const char *name, void *buf, 89 89 size_t size); 90 90 ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size); 91 - void kernfs_inode_init(void); 92 91 93 92 /* 94 93 * dir.c
-1
fs/kernfs/mount.c
··· 246 246 kernfs_node_cache = kmem_cache_create("kernfs_node_cache", 247 247 sizeof(struct kernfs_node), 248 248 0, SLAB_PANIC, NULL); 249 - kernfs_inode_init(); 250 249 }
+2 -14
fs/ocfs2/dlmfs/dlmfs.c
··· 390 390 ip->ip_conn = NULL; 391 391 } 392 392 393 - static struct backing_dev_info dlmfs_backing_dev_info = { 394 - .name = "ocfs2-dlmfs", 395 - .ra_pages = 0, /* No readahead */ 396 - .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, 397 - }; 398 - 399 393 static struct inode *dlmfs_get_root_inode(struct super_block *sb) 400 394 { 401 395 struct inode *inode = new_inode(sb); ··· 398 404 if (inode) { 399 405 inode->i_ino = get_next_ino(); 400 406 inode_init_owner(inode, NULL, mode); 401 - inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info; 407 + inode->i_mapping->backing_dev_info = &noop_backing_dev_info; 402 408 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; 403 409 inc_nlink(inode); 404 410 ··· 422 428 423 429 inode->i_ino = get_next_ino(); 424 430 inode_init_owner(inode, parent, mode); 425 - inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info; 431 + inode->i_mapping->backing_dev_info = &noop_backing_dev_info; 426 432 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; 427 433 428 434 ip = DLMFS_I(inode); ··· 637 643 int status; 638 644 int cleanup_inode = 0, cleanup_worker = 0; 639 645 640 - status = bdi_init(&dlmfs_backing_dev_info); 641 - if (status) 642 - return status; 643 - 644 646 dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache", 645 647 sizeof(struct dlmfs_inode_private), 646 648 0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT| ··· 663 673 kmem_cache_destroy(dlmfs_inode_cache); 664 674 if (cleanup_worker) 665 675 destroy_workqueue(user_dlm_worker); 666 - bdi_destroy(&dlmfs_backing_dev_info); 667 676 } else 668 677 printk("OCFS2 User DLM kernel interface loaded\n"); 669 678 return status; ··· 682 693 rcu_barrier(); 683 694 kmem_cache_destroy(dlmfs_inode_cache); 684 695 685 - bdi_destroy(&dlmfs_backing_dev_info); 686 696 } 687 697 688 698 MODULE_AUTHOR("Oracle");