Skip to content

Commit

Permalink
Freezer: Fix s2disk resume from initrd
Browse files Browse the repository at this point in the history
Add appropriate freezer annotations to handle_initrd(), so that it's possible
to resume from disk from an initrd.

http://bugzilla.kernel.org/show_bug.cgi?id=9345

Signed-off-by: Rafael J. Wysocki <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Nigel Cunningham <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Chris Friedhoff <[email protected]>
Signed-off-by: Len Brown <[email protected]>
  • Loading branch information
rjwysocki authored and lenb committed Nov 21, 2007
1 parent 2ffbb83 commit 8baabde
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions init/do_mounts_initrd.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,18 @@ static void __init handle_initrd(void)
sys_mount(".", "/", NULL, MS_MOVE, NULL);
sys_chroot(".");

/*
* In case that a resume from disk is carried out by linuxrc or one of
* its children, we need to tell the freezer not to wait for us.
*/
current->flags |= PF_FREEZER_SKIP;

pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);
if (pid > 0)
while (pid != sys_wait4(-1, NULL, 0, NULL)) {
try_to_freeze();
while (pid != sys_wait4(-1, NULL, 0, NULL))
yield();
}

current->flags &= ~PF_FREEZER_SKIP;

/* move initrd to rootfs' /old */
sys_fchdir(old_fd);
Expand Down

0 comments on commit 8baabde

Please sign in to comment.