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

Bury __put_super_and_need_restart()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 35cf7ba0 79893c17

+6 -31
+1
fs/drop_caches.c
··· 8 8 #include <linux/writeback.h> 9 9 #include <linux/sysctl.h> 10 10 #include <linux/gfp.h> 11 + #include "internal.h" 11 12 12 13 /* A global variable is a bit ugly, but it keeps the code simple */ 13 14 int sysctl_drop_caches;
+2
fs/internal.h
··· 87 87 * super.c 88 88 */ 89 89 extern int do_remount_sb(struct super_block *, int, void *, int); 90 + extern void __put_super(struct super_block *sb); 91 + extern void put_super(struct super_block *sb); 90 92 91 93 /* 92 94 * open.c
+1
fs/quota/quota.c
··· 18 18 #include <linux/quotaops.h> 19 19 #include <linux/types.h> 20 20 #include <linux/writeback.h> 21 + #include "../internal.h" 21 22 22 23 static int check_quotactl_permission(struct super_block *sb, int type, int cmd, 23 24 qid_t id)
+2 -28
fs/super.c
··· 127 127 /* Superblock refcounting */ 128 128 129 129 /* 130 - * Drop a superblock's refcount. Returns non-zero if the superblock was 131 - * destroyed. The caller must hold sb_lock. 130 + * Drop a superblock's refcount. The caller must hold sb_lock. 132 131 */ 133 - int __put_super(struct super_block *sb) 132 + void __put_super(struct super_block *sb) 134 133 { 135 - int ret = 0; 136 - 137 134 if (!--sb->s_count) { 138 135 list_del_init(&sb->s_list); 139 136 destroy_super(sb); 140 - ret = 1; 141 137 } 142 - return ret; 143 - } 144 - 145 - /* 146 - * Drop a superblock's refcount. 147 - * Returns non-zero if the superblock is about to be destroyed and 148 - * at least is already removed from super_blocks list, so if we are 149 - * making a loop through super blocks then we need to restart. 150 - * The caller must hold sb_lock. 151 - */ 152 - int __put_super_and_need_restart(struct super_block *sb) 153 - { 154 - /* check for race with generic_shutdown_super() */ 155 - if (list_empty(&sb->s_instances)) { 156 - /* super block is removed, need to restart... */ 157 - __put_super(sb); 158 - return 1; 159 - } 160 - /* can't be the last, since s_list is still in use */ 161 - sb->s_count--; 162 - BUG_ON(sb->s_count == 0); 163 - return 0; 164 138 } 165 139 166 140 /**
-3
include/linux/fs.h
··· 1778 1778 const struct super_operations *ops, unsigned long, 1779 1779 struct vfsmount *mnt); 1780 1780 extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); 1781 - int __put_super_and_need_restart(struct super_block *sb); 1782 - int __put_super(struct super_block *sb); 1783 - void put_super(struct super_block *sb); 1784 1781 1785 1782 /* Alas, no aliases. Too much hassle with bringing module.h everywhere */ 1786 1783 #define fops_get(fops) \