]> git.itanic.dy.fi Git - linux-stable/commitdiff
fs: Drop wait_unfrozen wait queue
authorJan Kara <jack@suse.cz>
Thu, 25 May 2023 14:17:10 +0000 (16:17 +0200)
committerJan Kara <jack@suse.cz>
Tue, 30 May 2023 13:36:40 +0000 (15:36 +0200)
wait_unfrozen waitqueue is used only in quota code to wait for
filesystem to become unfrozen. In that place we can just use
sb_start_write() - sb_end_write() pair to achieve the same. So just
remove the waitqueue.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Message-Id: <20230525141710.7595-1-jack@suse.cz>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/quota.c
fs/super.c
include/linux/fs.h

index 052f143e2e0e11b7dbd85e4644c810d0cf3cf94f..0e41fb84060f52cf53996bb5843d988c6a1beb40 100644 (file)
@@ -895,8 +895,9 @@ static struct super_block *quotactl_block(const char __user *special, int cmd)
                        up_write(&sb->s_umount);
                else
                        up_read(&sb->s_umount);
-               wait_event(sb->s_writers.wait_unfrozen,
-                          sb->s_writers.frozen == SB_UNFROZEN);
+               /* Wait for sb to unfreeze */
+               sb_start_write(sb);
+               sb_end_write(sb);
                put_super(sb);
                goto retry;
        }
index 34afe411cf2bc397bf509e55493bc350c0063f50..6283cea6728091ef5a5380690a97dd1e3e85e6b0 100644 (file)
@@ -236,7 +236,6 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags,
                                        &type->s_writers_key[i]))
                        goto fail;
        }
-       init_waitqueue_head(&s->s_writers.wait_unfrozen);
        s->s_bdi = &noop_backing_dev_info;
        s->s_flags = flags;
        if (s->s_user_ns != &init_user_ns)
@@ -1706,7 +1705,6 @@ int freeze_super(struct super_block *sb)
        if (ret) {
                sb->s_writers.frozen = SB_UNFROZEN;
                sb_freeze_unlock(sb, SB_FREEZE_PAGEFAULT);
-               wake_up(&sb->s_writers.wait_unfrozen);
                deactivate_locked_super(sb);
                return ret;
        }
@@ -1722,7 +1720,6 @@ int freeze_super(struct super_block *sb)
                                "VFS:Filesystem freeze failed\n");
                        sb->s_writers.frozen = SB_UNFROZEN;
                        sb_freeze_unlock(sb, SB_FREEZE_FS);
-                       wake_up(&sb->s_writers.wait_unfrozen);
                        deactivate_locked_super(sb);
                        return ret;
                }
@@ -1768,7 +1765,6 @@ static int thaw_super_locked(struct super_block *sb)
        sb->s_writers.frozen = SB_UNFROZEN;
        sb_freeze_unlock(sb, SB_FREEZE_FS);
 out:
-       wake_up(&sb->s_writers.wait_unfrozen);
        deactivate_locked_super(sb);
        return 0;
 }
index 21a98168085641d2ca0f7d6e20e4e279755bbf57..3b65a6194485b3189fb74bf546035bf4dcf6c980 100644 (file)
@@ -1146,7 +1146,6 @@ enum {
 
 struct sb_writers {
        int                             frozen;         /* Is sb frozen? */
-       wait_queue_head_t               wait_unfrozen;  /* wait for thaw */
        struct percpu_rw_semaphore      rw_sem[SB_FREEZE_LEVELS];
 };