From: Nigel Cunningham <nigel@suspend2.net>
To: linux-kernel@vger.kernel.org
Subject: [Suspend2][ 05/28] [Suspend2] Enable/disable swapfile.
Date: Tue, 27 Jun 2006 08:41:22 +1000 [thread overview]
Message-ID: <20060626224121.4975.19075.stgit@nigel.suspend2.net> (raw)
In-Reply-To: <20060626224105.4975.90758.stgit@nigel.suspend2.net>
Routines to enable and disable a swap file specifically for suspending. The
swapon is called after userspace is frozen and the swapoff is done prior to
restarting userspace. We can't completely remove the possibility of it
being used by the vm. We're just doing the best we can.
Signed-off-by: Nigel Cunningham <nigel@suspend2.net>
kernel/power/suspend_swap.c | 45 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/kernel/power/suspend_swap.c b/kernel/power/suspend_swap.c
index 212555f..13ad8d7 100644
--- a/kernel/power/suspend_swap.c
+++ b/kernel/power/suspend_swap.c
@@ -151,3 +151,48 @@ static struct block_device *open_bdev(in
return bdev;
}
+/* Must be silent - might be called from cat /proc/suspend/debug_info
+ * Returns 0 if was off, -EBUSY if was on, error value otherwise.
+ */
+static int enable_swapfile(void)
+{
+ int activateswapresult = -EINVAL;
+
+ if (suspend_swapon_status)
+ return 0;
+
+ if (swapfilename[0]) {
+ /* Attempt to swap on with maximum priority */
+ activateswapresult = sys_swapon(swapfilename, 0xFFFF);
+ if ((activateswapresult) && (activateswapresult != -EBUSY))
+ printk(name_suspend
+ "The swapfile/partition specified by "
+ "/proc/suspend/swapfile (%s) could not"
+ " be turned on (error %d). Attempting "
+ "to continue.\n",
+ swapfilename, activateswapresult);
+ if (!activateswapresult)
+ suspend_swapon_status = 1;
+ }
+ return activateswapresult;
+}
+
+/* Returns 0 if was on, -EINVAL if was off, error value otherwise */
+static int disable_swapfile(void)
+{
+ int result = -EINVAL;
+
+ if (!suspend_swapon_status)
+ return 0;
+
+ if (swapfilename[0]) {
+ result = sys_swapoff(swapfilename);
+ if (result == -EINVAL)
+ return 0; /* Wasn't on */
+ if (!result)
+ suspend_swapon_status = 0;
+ }
+
+ return result;
+}
+
--
Nigel Cunningham nigel at suspend2 dot net
next prev parent reply other threads:[~2006-06-26 22:42 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-26 22:41 [Suspend2][ 00/28] Swapwriter Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 01/28] [Suspend2] Swapwriter.c header Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 02/28] [Suspend2] Close a bdev used by the swapwriter Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 03/28] [Suspend2] Close bdevs opened " Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 04/28] [Suspend2] Open bdev for swapwriter use Nigel Cunningham
2006-06-26 22:41 ` Nigel Cunningham [this message]
2006-06-26 22:41 ` [Suspend2][ 06/28] [Suspend2] Try to parse resume2= for swapwriter Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 07/28] [Suspend2] Reset swapwriter when not resuming Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 08/28] [Suspend2] Parse swapwriter signature Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 09/28] [Suspend2] Prepare " Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 10/28] [Suspend2] Allocate swapwriter header space Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 11/28] [Suspend2] Get block chains for swapwriter Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 12/28] [Suspend2] Swapwriter storage allocated and available Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 13/28] [Suspend2] Initialise/cleanup swapwriter Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 14/28] [Suspend2] Release swapwriter storage Nigel Cunningham
2006-06-26 22:41 ` [Suspend2][ 15/28] [Suspend2] Allocate " Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 16/28] [Suspend2] Initialise/cleanup writing the header Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 17/28] [Suspend2] Swapwriter read image header init/cleanup Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 18/28] [Suspend2] Invalidate swapwriter image Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 19/28] [Suspend2] Swapwriter memory needed Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 20/28] [Suspend2] Get swapwriter debug info Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 21/28] [Suspend2] Get swapwriter image storage needed Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 22/28] [Suspend2] Does a swapwriter image exist? Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 23/28] [Suspend2] Swapwriter mark resume attempted Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 24/28] [Suspend2] Swapwriter parse resume2= Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 25/28] [Suspend2] Read resume2= values for currently enabled swap Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 26/28] [Suspend2] Swapwriter proc entries Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 27/28] [Suspend2] Swapwriter ops Nigel Cunningham
2006-06-26 22:42 ` [Suspend2][ 28/28] [Suspend2] Swapwriter load and unload routines Nigel Cunningham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060626224121.4975.19075.stgit@nigel.suspend2.net \
--to=nigel@suspend2.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®