Commit b5dee313 authored by Harry Pan's avatar Harry Pan Committed by Rafael J. Wysocki
Browse files

PM / sleep: Refactor filesystems sync to reduce duplication



Create a common helper to sync filesystems for system suspend and
hibernation.

Signed-off-by: default avatarHarry Pan <harry.pan@intel.com>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
[ rjw: Changelog ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 74a1dd86
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -425,6 +425,7 @@ void restore_processor_state(void);
/* kernel/power/main.c */
extern int register_pm_notifier(struct notifier_block *nb);
extern int unregister_pm_notifier(struct notifier_block *nb);
extern void ksys_sync_helper(void);

#define pm_notifier(fn, pri) {				\
	static struct notifier_block fn##_nb =			\
@@ -462,6 +463,8 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
	return 0;
}

static inline void ksys_sync_helper(void) {}

#define pm_notifier(fn, pri)	do { (void)(fn); } while (0)

static inline bool pm_wakeup_pending(void) { return false; }
+1 −4
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@

#include <linux/export.h>
#include <linux/suspend.h>
#include <linux/syscalls.h>
#include <linux/reboot.h>
#include <linux/string.h>
#include <linux/device.h>
@@ -709,9 +708,7 @@ int hibernate(void)
		goto Exit;
	}

	pr_info("Syncing filesystems ... \n");
	ksys_sync();
	pr_info("done.\n");
	ksys_sync_helper();

	error = freeze_processes();
	if (error)
+9 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/suspend.h>
#include <linux/syscalls.h>

#include "power.h"

@@ -51,6 +52,14 @@ void unlock_system_sleep(void)
}
EXPORT_SYMBOL_GPL(unlock_system_sleep);

void ksys_sync_helper(void)
{
	pr_info("Syncing filesystems ... ");
	ksys_sync();
	pr_cont("done.\n");
}
EXPORT_SYMBOL_GPL(ksys_sync_helper);

/* Routines for PM-transition notifications */

static BLOCKING_NOTIFIER_HEAD(pm_chain_head);
+5 −8
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
#include <linux/console.h>
#include <linux/cpu.h>
#include <linux/cpuidle.h>
#include <linux/syscalls.h>
#include <linux/gfp.h>
#include <linux/io.h>
#include <linux/kernel.h>
@@ -568,13 +567,11 @@ static int enter_state(suspend_state_t state)
	if (state == PM_SUSPEND_TO_IDLE)
		s2idle_begin();

#ifndef CONFIG_SUSPEND_SKIP_SYNC
	if (!IS_ENABLED(CONFIG_SUSPEND_SKIP_SYNC)) {
		trace_suspend_resume(TPS("sync_filesystems"), 0, true);
	pr_info("Syncing filesystems ... ");
	ksys_sync();
	pr_cont("done.\n");
		ksys_sync_helper();
		trace_suspend_resume(TPS("sync_filesystems"), 0, false);
#endif
	}

	pm_pr_dbg("Preparing system for sleep (%s)\n", mem_sleep_labels[state]);
	pm_suspend_clear_flags();
+1 −4
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@
 */

#include <linux/suspend.h>
#include <linux/syscalls.h>
#include <linux/reboot.h>
#include <linux/string.h>
#include <linux/device.h>
@@ -228,9 +227,7 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
		if (data->frozen)
			break;

		printk("Syncing filesystems ... ");
		ksys_sync();
		printk("done.\n");
		ksys_sync_helper();

		error = freeze_processes();
		if (error)