lkml.org 
[lkml]   [2003]   [Jul]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Allow initrd_load() before software_resume()
Hi.

I'll try to apply it to the 2.4 version and include it in the upcoming
2.6 version. (Yes, upcoming means it's finally on the way).

Regards,

Nigel

On Fri, 2003-08-01 at 12:29, Pascal Brisset wrote:
> This patch adds a boot parameter "resume_initrd".
> If present, init will load the initrd before trying to resume.
>
> This makes it posssible to resume from an encrypted suspend image.
> The initrd should insmod cryptoloop.o or loop-AES.o and perform
> losetup -e so that resume=/dev/loopX makes sense.
> Note: software_resume() should not be allowed to complete if
> initrd has altered disks (e.g. by flushing journals).
>
> /initrd
> |-- bin
> | |-- ash
> | |-- insmod
> | `-- losetup
> |-- dev
> | |-- console
> | |-- hdaX
> | |-- loopX
> | |-- null
> | `-- tty
> |-- linuxrc
> |-- loop.o
> `-- lost+found
>
> Resuming works, but suspension seems to fail more frequently when
> the swap is encrypted. I am using loop-AES-v1.7d + patch for 2.6.
>
> Is it safe to suspend to loop devices ?
>
> -- Pascal
>
>
> ______________________________________________________________________
>
> diff -ur linux-2.6.0-test1.orig/Documentation/kernel-parameters.txt linux-2.6.0-test1/Documentation/kernel-parameters.txt
> --- linux-2.6.0-test1.orig/Documentation/kernel-parameters.txt 2003-07-14 05:39:36.000000000 +0200
> +++ linux-2.6.0-test1/Documentation/kernel-parameters.txt 2003-08-01 01:19:46.000000000 +0200
> @@ -816,6 +816,8 @@
>
> resume= [SWSUSP] Specify the partition device for software suspension
>
> + resume_initrd [SWSUSP] Run initrd before resuming from software suspension
> +
> riscom8= [HW,SERIAL]
> Format: <io_board1>[,<io_board2>[,...<io_boardN>]]
>
> diff -ur linux-2.6.0-test1.orig/init/do_mounts.c linux-2.6.0-test1/init/do_mounts.c
> --- linux-2.6.0-test1.orig/init/do_mounts.c 2003-07-14 05:32:44.000000000 +0200
> +++ linux-2.6.0-test1/init/do_mounts.c 2003-08-01 01:21:44.000000000 +0200
> @@ -49,6 +49,15 @@
> __setup("ro", readonly);
> __setup("rw", readwrite);
>
> +static int resume_initrd = 0;
> +static int __init set_resume_initrd(char *str)
> +{
> + resume_initrd = 1;
> + return 1;
> +}
> +
> +__setup("resume_initrd", set_resume_initrd);
> +
> static dev_t __init try_name(char *name, int part)
> {
> char path[64];
> @@ -365,12 +374,21 @@
>
> is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
>
> - /* This has to be before mounting root, because even readonly mount of reiserfs would replay
> - log corrupting stuff */
> - software_resume();
> + /* software_resume() has to be before mounting root, because even
> + readonly mount of reiserfs would replay log corrupting stuff.
> + However, users may still want to run initrd first. */
> + if (resume_initrd) {
> + if (initrd_load()) {
> + software_resume();
> + goto out;
> + }
> + }
> + else {
> + software_resume();
>
> - if (initrd_load())
> - goto out;
> + if (initrd_load())
> + goto out;
> + }
>
> if (is_floppy && rd_doload && rd_load_disk(0))
> ROOT_DEV = Root_RAM0;
--
Nigel Cunningham
495 St Georges Road South, Hastings 4201, New Zealand

You see, at just the right time, when we were still powerless,
Christ died for the ungodly.
-- Romans 5:6, NIV.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.089 / U:0.952 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site