Bury __put_super_and_need_restart()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 23 Mar 2010 01:13:53 +0000 (21:13 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 21 May 2010 22:31:16 +0000 (18:31 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/drop_caches.c
fs/internal.h
fs/quota/quota.c
fs/super.c
include/linux/fs.h

index 42728a1..52047cf 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/writeback.h>
 #include <linux/sysctl.h>
 #include <linux/gfp.h>
+#include "internal.h"
 
 /* A global variable is a bit ugly, but it keeps the code simple */
 int sysctl_drop_caches;
index 8a03a54..6b706bc 100644 (file)
@@ -87,6 +87,8 @@ extern struct file *get_empty_filp(void);
  * super.c
  */
 extern int do_remount_sb(struct super_block *, int, void *, int);
+extern void __put_super(struct super_block *sb);
+extern void put_super(struct super_block *sb);
 
 /*
  * open.c
index 2196f8b..3ce1553 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/quotaops.h>
 #include <linux/types.h>
 #include <linux/writeback.h>
+#include "../internal.h"
 
 static int check_quotactl_permission(struct super_block *sb, int type, int cmd,
                                     qid_t id)
index 1f72e0d..95adbb3 100644 (file)
@@ -127,40 +127,14 @@ static inline void destroy_super(struct super_block *s)
 /* Superblock refcounting  */
 
 /*
- * Drop a superblock's refcount.  Returns non-zero if the superblock was
- * destroyed.  The caller must hold sb_lock.
+ * Drop a superblock's refcount.  The caller must hold sb_lock.
  */
-int __put_super(struct super_block *sb)
+void __put_super(struct super_block *sb)
 {
-       int ret = 0;
-
        if (!--sb->s_count) {
                list_del_init(&sb->s_list);
                destroy_super(sb);
-               ret = 1;
-       }
-       return ret;
-}
-
-/*
- * Drop a superblock's refcount.
- * Returns non-zero if the superblock is about to be destroyed and
- * at least is already removed from super_blocks list, so if we are
- * making a loop through super blocks then we need to restart.
- * The caller must hold sb_lock.
- */
-int __put_super_and_need_restart(struct super_block *sb)
-{
-       /* check for race with generic_shutdown_super() */
-       if (list_empty(&sb->s_instances)) {
-               /* super block is removed, need to restart... */
-               __put_super(sb);
-               return 1;
        }
-       /* can't be the last, since s_list is still in use */
-       sb->s_count--;
-       BUG_ON(sb->s_count == 0);
-       return 0;
 }
 
 /**
index e1c7427..5230867 100644 (file)
@@ -1778,9 +1778,6 @@ extern int get_sb_pseudo(struct file_system_type *, char *,
        const struct super_operations *ops, unsigned long,
        struct vfsmount *mnt);
 extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb);
-int __put_super_and_need_restart(struct super_block *sb);
-int __put_super(struct super_block *sb);
-void put_super(struct super_block *sb);
 
 /* Alas, no aliases. Too much hassle with bringing module.h everywhere */
 #define fops_get(fops) \