diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-22 21:13:53 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-05-21 18:31:16 -0400 |
commit | 35cf7ba0b46dc3582a01c3860b14bff122662aa3 (patch) | |
tree | 2b38e9333600f468f0c8371c657c02e3aa8ec43b /fs/super.c | |
parent | 79893c17b45dec0d3c25bc22d28d9f319b14f573 (diff) | |
download | lwn-35cf7ba0b46dc3582a01c3860b14bff122662aa3.tar.gz lwn-35cf7ba0b46dc3582a01c3860b14bff122662aa3.zip |
Bury __put_super_and_need_restart()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/super.c')
-rw-r--r-- | fs/super.c | 30 |
1 files changed, 2 insertions, 28 deletions
diff --git a/fs/super.c b/fs/super.c index 1f72e0d42d8f..95adbb3d8e58 100644 --- a/fs/super.c +++ b/fs/super.c @@ -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; } /** |