From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Andrew Morton <akpm@osdl.org>, LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH -mm 4/6] swsusp: Add resume_offset command line parameter
Date: Wed, 20 Sep 2006 21:46:58 +0200 [thread overview]
Message-ID: <200609202146.59105.rjw@sisk.pl> (raw)
In-Reply-To: <200609202120.58082.rjw@sisk.pl>
Add the kernel command line parameter "resume_offset=" allowing us to specify
the offset, in <PAGE_SIZE> units, from the beginning of the partition pointed
to by the "resume=" parameter at which the swap header is located.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
kernel/power/disk.c | 15 +++++++++++++++
kernel/power/power.h | 1 +
kernel/power/swap.c | 15 ++++++++++-----
3 files changed, 26 insertions(+), 5 deletions(-)
Index: linux-2.6.18-rc7-mm1/kernel/power/disk.c
===================================================================
--- linux-2.6.18-rc7-mm1.orig/kernel/power/disk.c
+++ linux-2.6.18-rc7-mm1/kernel/power/disk.c
@@ -27,6 +27,7 @@
static int noresume = 0;
char resume_file[256] = CONFIG_PM_STD_PARTITION;
dev_t swsusp_resume_device;
+sector_t swsusp_resume_block;
/**
* power_down - Shut machine down for hibernate.
@@ -404,6 +405,19 @@ static int __init resume_setup(char *str
return 1;
}
+static int __init resume_offset_setup(char *str)
+{
+ loff_t offset;
+
+ if (noresume)
+ return 1;
+
+ if (sscanf(str, "%llu", &offset) == 1)
+ swsusp_resume_block = offset;
+
+ return 1;
+}
+
static int __init noresume_setup(char *str)
{
noresume = 1;
@@ -411,4 +425,5 @@ static int __init noresume_setup(char *s
}
__setup("noresume", noresume_setup);
+__setup("resume_offset=", resume_offset_setup);
__setup("resume=", resume_setup);
Index: linux-2.6.18-rc7-mm1/kernel/power/power.h
===================================================================
--- linux-2.6.18-rc7-mm1.orig/kernel/power/power.h
+++ linux-2.6.18-rc7-mm1/kernel/power/power.h
@@ -42,6 +42,7 @@ extern const void __nosave_begin, __nosa
extern unsigned long image_size;
extern int in_suspend;
extern dev_t swsusp_resume_device;
+extern sector_t swsusp_resume_block;
extern asmlinkage int swsusp_arch_suspend(void);
extern asmlinkage int swsusp_arch_resume(void);
Index: linux-2.6.18-rc7-mm1/kernel/power/swap.c
===================================================================
--- linux-2.6.18-rc7-mm1.orig/kernel/power/swap.c
+++ linux-2.6.18-rc7-mm1/kernel/power/swap.c
@@ -160,13 +160,14 @@ static int mark_swapfiles(loff_t start)
{
int error;
- bio_read_page(0, &swsusp_header, NULL);
+ bio_read_page(swsusp_resume_block, &swsusp_header, NULL);
if (!memcmp("SWAP-SPACE",swsusp_header.sig, 10) ||
!memcmp("SWAPSPACE2",swsusp_header.sig, 10)) {
memcpy(swsusp_header.orig_sig,swsusp_header.sig, 10);
memcpy(swsusp_header.sig,SWSUSP_SIG, 10);
swsusp_header.image = start;
- error = bio_write_page(0, &swsusp_header, NULL);
+ error = bio_write_page(swsusp_resume_block,
+ &swsusp_header, NULL);
} else {
printk(KERN_ERR "swsusp: Swap header not found!\n");
error = -ENODEV;
@@ -183,7 +184,7 @@ static int swsusp_swap_check(void) /* Th
{
int res;
- res = swap_type_of(swsusp_resume_device, 0);
+ res = swap_type_of(swsusp_resume_device, swsusp_resume_block);
if (res < 0)
return res;
@@ -606,12 +607,16 @@ int swsusp_check(void)
if (!IS_ERR(resume_bdev)) {
set_blocksize(resume_bdev, PAGE_SIZE);
memset(&swsusp_header, 0, sizeof(swsusp_header));
- if ((error = bio_read_page(0, &swsusp_header, NULL)))
+ error = bio_read_page(swsusp_resume_block,
+ &swsusp_header, NULL);
+ if (error)
return error;
+
if (!memcmp(SWSUSP_SIG, swsusp_header.sig, 10)) {
memcpy(swsusp_header.sig, swsusp_header.orig_sig, 10);
/* Reset swap signature now */
- error = bio_write_page(0, &swsusp_header, NULL);
+ error = bio_write_page(swsusp_resume_block,
+ &swsusp_header, NULL);
} else {
return -EINVAL;
}
next prev parent reply other threads:[~2006-09-20 21:21 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-20 19:20 [PATCH -mm 0/6] swsusp: Add support for swap files Rafael J. Wysocki
2006-09-20 19:31 ` [PATCH -mm 1/6] swsusp: Use device and offset to intentify swap areas Rafael J. Wysocki
2006-09-21 21:27 ` Pavel Machek
2006-09-20 19:34 ` [PATCH -mm 2/6] swsusp: Rearrange swap-handling code Rafael J. Wysocki
2006-09-21 21:28 ` Pavel Machek
2006-09-20 19:41 ` [PATCH -mm 3/6] swsusp: Use block device offsets to identify swap locations Rafael J. Wysocki
2006-09-21 21:30 ` Pavel Machek
2006-09-21 22:21 ` Rafael J. Wysocki
2006-09-20 19:46 ` Rafael J. Wysocki [this message]
2006-09-21 21:31 ` [PATCH -mm 4/6] swsusp: Add resume_offset command line parameter Pavel Machek
2006-09-21 22:18 ` Rafael J. Wysocki
2006-09-22 13:34 ` Pavel Machek
2006-09-20 19:54 ` [PATCH -mm 5/6] mm: Print first block offset for swap areas Rafael J. Wysocki
2006-09-21 21:32 ` Pavel Machek
2006-09-21 22:10 ` Dave Jones
2006-09-21 22:46 ` Rafael J. Wysocki
2006-09-21 23:58 ` Jason Lunz
2006-09-22 10:57 ` Rafael J. Wysocki
2006-09-22 14:13 ` Jason Lunz
2006-09-22 14:18 ` Pavel Machek
2006-09-22 14:35 ` Jason Lunz
2006-09-22 14:37 ` Pavel Machek
2006-09-22 14:32 ` Rafael J. Wysocki
2006-09-22 14:33 ` Pavel Machek
2006-09-20 20:01 ` [PATCH -mm 6/6] swsusp: Document support for swap files Rafael J. Wysocki
2006-09-21 21:33 ` Pavel Machek
2006-09-22 1:01 ` [PATCH -mm 0/6] swsusp: Add " Nigel Cunningham
2006-09-22 5:23 ` Pavel Machek
2006-09-22 11:28 ` Rafael J. Wysocki
2006-09-22 22:18 ` Nigel Cunningham
2006-09-23 22:18 ` Rafael J. Wysocki
2006-09-23 22:49 ` Nigel Cunningham
2006-09-23 22:59 ` Pavel Machek
2006-09-23 23:24 ` Nigel Cunningham
-- strict thread matches above, loose matches on Subject: below --
2006-09-23 9:57 [PATCH -mm] " Rafael J. Wysocki
2006-09-23 10:08 ` [PATCH -mm 4/6] swsusp: Add resume_offset command line parameter Rafael J. Wysocki
2006-09-26 19:38 ` Andrew Morton
2006-09-26 20:10 ` Rafael J. Wysocki
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=200609202146.59105.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
/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