Skip to content

Commit 8e2d57e

Browse files
wusamuel6rafaeljw
authored andcommitted
PM: sleep: Call pm_sleep_fs_sync() instead of ksys_sync_helper()
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>
1 parent bf8867e commit 8e2d57e

3 files changed

Lines changed: 13 additions & 3 deletions

File tree

kernel/power/hibernate.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,10 @@ int hibernate(void)
820820
if (error)
821821
goto Restore;
822822

823-
ksys_sync_helper();
823+
error = pm_sleep_fs_sync();
824+
if (error)
825+
goto Notify;
826+
824827
if (filesystem_freeze_enabled)
825828
filesystems_freeze();
826829

@@ -892,6 +895,7 @@ int hibernate(void)
892895
freezer_test_done = false;
893896
Exit:
894897
filesystems_thaw();
898+
Notify:
895899
pm_notifier_call_chain(PM_POST_HIBERNATION);
896900
Restore:
897901
pm_restore_console();

kernel/power/suspend.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,11 @@ static int enter_state(suspend_state_t state)
594594

595595
if (sync_on_suspend_enabled) {
596596
trace_suspend_resume(TPS("sync_filesystems"), 0, true);
597-
ksys_sync_helper();
597+
598+
error = pm_sleep_fs_sync();
599+
if (error)
600+
goto Unlock;
601+
598602
trace_suspend_resume(TPS("sync_filesystems"), 0, false);
599603
}
600604

kernel/power/user.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,9 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
278278
if (data->frozen)
279279
break;
280280

281-
ksys_sync_helper();
281+
error = pm_sleep_fs_sync();
282+
if (error)
283+
break;
282284

283285
error = freeze_processes();
284286
if (error)

0 commit comments

Comments
 (0)