This reverts commit a3f8f8662771285511ae26c4c8d3ba1cd22159b9.

Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15317
References: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15341
Signed-off-by: Chaitanya Kumar Borah <[email protected]>
---
 fs/efivarfs/super.c      |  1 -
 fs/super.c               | 13 +++----------
 include/linux/fs.h       |  3 +--
 kernel/power/hibernate.c |  9 ++++++---
 kernel/power/suspend.c   |  3 ++-
 5 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index 6de97565d5f7..1f4d8ce56667 100644
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -533,7 +533,6 @@ static struct file_system_type efivarfs_type = {
        .init_fs_context = efivarfs_init_fs_context,
        .kill_sb = efivarfs_kill_sb,
        .parameters = efivarfs_parameters,
-       .fs_flags = FS_POWER_FREEZE,
 };
 
 static __init int efivarfs_init(void)
diff --git a/fs/super.c b/fs/super.c
index 277b84e5c279..5bab94fb7e03 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -1183,14 +1183,11 @@ static inline bool get_active_super(struct super_block 
*sb)
 
 static const char *filesystems_freeze_ptr = "filesystems_freeze";
 
-static void filesystems_freeze_callback(struct super_block *sb, void 
*freeze_all_ptr)
+static void filesystems_freeze_callback(struct super_block *sb, void *unused)
 {
        if (!sb->s_op->freeze_fs && !sb->s_op->freeze_super)
                return;
 
-       if (freeze_all_ptr && !(sb->s_type->fs_flags & FS_POWER_FREEZE))
-               return;
-
        if (!get_active_super(sb))
                return;
 
@@ -1204,13 +1201,9 @@ static void filesystems_freeze_callback(struct 
super_block *sb, void *freeze_all
        deactivate_super(sb);
 }
 
-void filesystems_freeze(bool freeze_all)
+void filesystems_freeze(void)
 {
-       void *freeze_all_ptr = NULL;
-
-       if (freeze_all)
-               freeze_all_ptr = &freeze_all;
-       __iterate_supers(filesystems_freeze_callback, freeze_all_ptr,
+       __iterate_supers(filesystems_freeze_callback, NULL,
                         SUPER_ITER_UNLOCKED | SUPER_ITER_REVERSE);
 }
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index dd3b57cfadee..6abc3bb2939d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2689,7 +2689,6 @@ struct file_system_type {
 #define FS_ALLOW_IDMAP         32      /* FS has been updated to handle vfs 
idmappings. */
 #define FS_MGTIME              64      /* FS uses multigrain timestamps */
 #define FS_LBS                 128     /* FS supports LBS */
-#define FS_POWER_FREEZE                256     /* Always freeze on 
suspend/hibernate */
 #define FS_RENAME_DOES_D_MOVE  32768   /* FS will handle d_move() during 
rename() internally. */
        int (*init_fs_context)(struct fs_context *);
        const struct fs_parameter_spec *parameters;
@@ -3608,7 +3607,7 @@ extern void drop_super_exclusive(struct super_block *sb);
 extern void iterate_supers(void (*f)(struct super_block *, void *), void *arg);
 extern void iterate_supers_type(struct file_system_type *,
                                void (*)(struct super_block *, void *), void *);
-void filesystems_freeze(bool freeze_all);
+void filesystems_freeze(void);
 void filesystems_thaw(void);
 
 extern int dcache_dir_open(struct inode *, struct file *);
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 26e45f86b955..53166ef86ba4 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -821,7 +821,8 @@ int hibernate(void)
                goto Restore;
 
        ksys_sync_helper();
-       filesystems_freeze(filesystem_freeze_enabled);
+       if (filesystem_freeze_enabled)
+               filesystems_freeze();
 
        error = freeze_processes();
        if (error)
@@ -927,7 +928,8 @@ int hibernate_quiet_exec(int (*func)(void *data), void 
*data)
        if (error)
                goto restore;
 
-       filesystems_freeze(filesystem_freeze_enabled);
+       if (filesystem_freeze_enabled)
+               filesystems_freeze();
 
        error = freeze_processes();
        if (error)
@@ -1077,7 +1079,8 @@ static int software_resume(void)
        if (error)
                goto Restore;
 
-       filesystems_freeze(filesystem_freeze_enabled);
+       if (filesystem_freeze_enabled)
+               filesystems_freeze();
 
        pm_pr_dbg("Preparing processes for hibernation restore.\n");
        error = freeze_processes();
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 3d4ebedad69f..b4ca17c2fecf 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -375,7 +375,8 @@ static int suspend_prepare(suspend_state_t state)
        if (error)
                goto Restore;
 
-       filesystems_freeze(filesystem_freeze_enabled);
+       if (filesystem_freeze_enabled)
+               filesystems_freeze();
        trace_suspend_resume(TPS("freeze_processes"), 0, true);
        error = suspend_freeze_processes();
        trace_suspend_resume(TPS("freeze_processes"), 0, false);
-- 
2.25.1

Reply via email to