]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PM: sleep: Call pm_sleep_fs_sync() instead of ksys_sync_helper()
authorSamuel Wu <wusamuel@google.com>
Wed, 19 Nov 2025 17:14:25 +0000 (09:14 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 20 Nov 2025 21:29:40 +0000 (22:29 +0100)
Replace the direct calls to ksys_sync_helper() with the new
pm_sleep_fs_sync() in suspend and hibernation code paths.

This enables the new mechanism allowing the filesystem sync phase
to be interrupted.

Suggested-by: Saravana Kannan <saravanak@google.com>
Signed-off-by: Samuel Wu <wusamuel@google.com>
Co-developed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
[ rjw: Subject and changelog edits, tags adjustment ]
Link: https://patch.msgid.link/20251119171426.4086783-3-wusamuel@google.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/power/hibernate.c
kernel/power/suspend.c
kernel/power/user.c

index 53166ef86ba4687fea6f00db1ab910c0f98c9391..7fed1cd36e4d838ba1ffab4fba1990b000e31bc7 100644 (file)
@@ -820,7 +820,10 @@ int hibernate(void)
        if (error)
                goto Restore;
 
-       ksys_sync_helper();
+       error = pm_sleep_fs_sync();
+       if (error)
+               goto Notify;
+
        if (filesystem_freeze_enabled)
                filesystems_freeze();
 
@@ -892,6 +895,7 @@ int hibernate(void)
        freezer_test_done = false;
  Exit:
        filesystems_thaw();
+ Notify:
        pm_notifier_call_chain(PM_POST_HIBERNATION);
  Restore:
        pm_restore_console();
index 1c2f777da36749752fcc0c3907ad8fde54899095..02f50afaa92795077473c60d2355b2114febd206 100644 (file)
@@ -594,7 +594,11 @@ static int enter_state(suspend_state_t state)
 
        if (sync_on_suspend_enabled) {
                trace_suspend_resume(TPS("sync_filesystems"), 0, true);
-               ksys_sync_helper();
+
+               error = pm_sleep_fs_sync();
+               if (error)
+                       goto Unlock;
+
                trace_suspend_resume(TPS("sync_filesystems"), 0, false);
        }
 
index 3f9e3efb9f6e7af9b879ff91f8a0a8722d633f0f..4401cfe26e5c98ec038d3505d2f008794e8cb7c0 100644 (file)
@@ -278,7 +278,9 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
                if (data->frozen)
                        break;
 
-               ksys_sync_helper();
+               error = pm_sleep_fs_sync();
+               if (error)
+                       break;
 
                error = freeze_processes();
                if (error)