|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/**
|