Return early for the case where the super block isn't cleaned up to
reduce level of indentation.

Signed-off-by: Christoph Hellwig <h...@lst.de>
---
 fs/super.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/fs/super.c b/fs/super.c
index 2d762ce67f6e6c..127a17d958a482 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -476,27 +476,28 @@ static void kill_super_notify(struct super_block *sb)
 void deactivate_locked_super(struct super_block *s)
 {
        struct file_system_type *fs = s->s_type;
-       if (atomic_dec_and_test(&s->s_active)) {
-               unregister_shrinker(&s->s_shrink);
-               fs->kill_sb(s);
 
-               kill_super_notify(s);
-
-               /*
-                * Since list_lru_destroy() may sleep, we cannot call it from
-                * put_super(), where we hold the sb_lock. Therefore we destroy
-                * the lru lists right now.
-                */
-               list_lru_destroy(&s->s_dentry_lru);
-               list_lru_destroy(&s->s_inode_lru);
-
-               put_filesystem(fs);
-               put_super(s);
-       } else {
+       if (!atomic_dec_and_test(&s->s_active)) {
                super_unlock_excl(s);
+               return;
        }
-}
 
+       unregister_shrinker(&s->s_shrink);
+       fs->kill_sb(s);
+
+       kill_super_notify(s);
+
+       /*
+        * Since list_lru_destroy() may sleep, we cannot call it from
+        * put_super(), where we hold the sb_lock. Therefore we destroy
+        * the lru lists right now.
+        */
+       list_lru_destroy(&s->s_dentry_lru);
+       list_lru_destroy(&s->s_inode_lru);
+
+       put_filesystem(fs);
+       put_super(s);
+}
 EXPORT_SYMBOL(deactivate_locked_super);
 
 /**
-- 
2.39.2

Reply via email to