linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Nigel Cunningham <nigel@nigel.suspend2.net>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: Back to the future.
Date: Thu, 26 Apr 2007 09:56:58 -0700 (PDT)	[thread overview]
Message-ID: <alpine.LFD.0.98.0704260941310.9964@woody.linux-foundation.org> (raw)
In-Reply-To: <1177573348.5025.224.camel@nigel.suspend2.net>



On Thu, 26 Apr 2007, Nigel Cunningham wrote:
> 
> * Doing things in the right order? (Prepare the image, then do the
> atomic copy, then save).

I'd actually like to discuss this a bit..

I'm obviously not a huge fan of the whole user/kernel level split and 
interfaces, but I actually do think that there is *one* split that makes 
sense:

 - generate the (whole) snapshot image entirely inside the kernel

 - do nothing else (ie no IO at all), and just export it as a single image 
   to user space (literally just mapping the pages into user space). 
   *one* interface. None of the "pretty UI update" crap. Just a single 
   system call:

	void *snapshot_system(u32 *size);

   which will map in the snapshot, return the mapped address and the size 
   (and if you want to support snapshots > 4GB, be my guest, but I suspect 
   you're actually *better* off just admitting that if you cannot shrink 
   the snapshot to less than 32 bits, it's not worth doing)

User space gets a fully running system, with that one process having that 
one image mapped into its address space. It can then compress/write/do 
whatever to that snapshot.

You need one other system call, of course, which is

	int resume_snapshot(void *snapshot, u32 size);

and for testing, you should be able to basically do

	u32 size;
	void *buffer = snapshot_system(&size);
	if (buffer != MAP_FAILED)
		resume_snapshot(buffer, size);

and it should obviously work.

And btw, the device model changes are a big part of this. Because I don't 
think it's even remotely debuggable with the full suspend/resume of the 
devices being part of generating the image! That freeze/snapshot/unfreeze 
sequence is likely a lot more debuggable, if only because freeze/unfreeze 
is actually a no-op for most devices, and snapshotting is trivial too.

Once you have that snapshot image in user space you can do anything you 
want. And again: you'd hav a fully working system: not any degradation 
*at*all*. If you're in X, then X will continue running etc even after the 
snapshotting, although obviously the snapshotting will have tried to page 
a lot of stuff out in order to make the snapshot smaller, so you'll likely 
be crawling.

> * Mulithreaded I/O (might as well use multiple cores to compress the
> image, now that we're hotplugging later).
> * Support for > 1 swap device.
> * Support for ordinary files.
> * Full image option.
> * Modular design?

I'd really suggest _just_ the "full image". Nothing else is probably ever 
worth supporting. Your "snapshot to disk" wouldn't be _quite_ as simple as 
"echo disk > /sys/power/state", but it should not necessarily be much 
worse than

	snapshot_kernel | gzip -9 > /dev/snapshot

either (and resuming from the snapshot would just be the reverse)!

And if you want to send the snapshot over a TCP connection to another 
host, be my guest. With pretty images while it's transferring. Whatever.

			Linus

  parent reply	other threads:[~2007-04-26 16:57 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-26  6:04 Back to the future Nigel Cunningham
2007-04-26  7:28 ` Pekka Enberg
     [not found]   ` <1177573348.50 25.224.camel@nigel.suspend2.net>
2007-04-26  7:42   ` Nigel Cunningham
2007-04-26  8:17     ` Pekka Enberg
2007-04-26  9:28       ` Nigel Cunningham
2007-04-26 17:29         ` Luca Tettamanti
2007-04-26 16:56     ` Linus Torvalds [this message]
2007-04-26 17:03       ` Xavier Bestel
2007-04-26 17:34         ` Linus Torvalds
2007-04-26 20:08           ` Nigel Cunningham
2007-04-26 20:45             ` Linus Torvalds
2007-04-26 20:50               ` Nigel Cunningham
2007-04-27  0:10                 ` Olivier Galibert
2007-04-27 10:21                   ` Daniel Pittman
2007-04-27 23:19                   ` Nigel Cunningham
2007-04-26 21:38             ` Theodore Tso
2007-04-27 10:10               ` Christoph Hellwig
2007-04-26 22:08             ` Rafael J. Wysocki
2007-04-26 22:20               ` Nigel Cunningham
2007-04-26 23:15               ` Linus Torvalds
2007-04-27  7:51           ` Pekka Enberg
2007-04-26 17:07       ` Linus Torvalds
2007-04-26 18:22       ` Chase Venters
2007-04-26 18:50         ` David Lang
2007-04-26 19:56       ` Nigel Cunningham
2007-04-27  4:52         ` Pekka J Enberg
2007-04-27  6:08           ` Nigel Cunningham
2007-04-27  6:18             ` Pekka J Enberg
2007-04-27  6:29               ` Pekka J Enberg
2007-04-27  6:34               ` Nigel Cunningham
2007-04-27  6:50                 ` Pekka J Enberg
2007-04-27  7:03                   ` Nigel Cunningham
2007-04-27  7:24                     ` Pekka J Enberg
2007-04-27  9:50               ` Oliver Neukum
2007-04-27 10:12                 ` Pekka J Enberg
2007-04-27 19:07                   ` Oliver Neukum
2007-04-28  9:22                     ` Pekka Enberg
2007-04-28 13:37                       ` Oliver Neukum
2007-05-03 12:06                         ` Pavel Machek
2007-05-04 21:52                           ` Indan Zupancic
2007-05-05  9:16                             ` Pavel Machek
2007-05-05 12:02                               ` Indan Zupancic
2007-04-28 10:35                   ` Rafael J. Wysocki
2007-04-28 18:43                     ` David Lang
2007-04-28 19:37                       ` Rafael J. Wysocki
2007-04-27 21:24               ` Rafael J. Wysocki
2007-04-27 21:44                 ` Linus Torvalds
2007-04-27 22:04                   ` Rafael J. Wysocki
2007-04-27 22:08                     ` Linus Torvalds
2007-04-27 22:41                       ` Rafael J. Wysocki
2007-04-27 22:26                         ` David Lang
2007-04-27 23:21                           ` Rafael J. Wysocki
2007-04-27 23:01                             ` David Lang
2007-04-28  0:02                               ` Rafael J. Wysocki
2007-04-27 23:17                         ` Linus Torvalds
2007-04-27 23:45                           ` Rafael J. Wysocki
2007-04-27 23:57                             ` Nigel Cunningham
2007-04-27 23:50                               ` David Lang
2007-04-28  0:40                                 ` Linus Torvalds
2007-04-28  6:58                                 ` Oliver Neukum
2007-04-28  9:16                                   ` Pekka J Enberg
2007-04-28 18:28                                   ` David Lang
2007-05-03 17:18                                 ` Pavel Machek
2007-05-07  2:13                                   ` David Lang
2007-05-07  3:33                                     ` Kyle Moffett
2007-05-07 12:48                                     ` Pavel Machek
2007-05-07 12:52                                       ` Oliver Neukum
2007-05-07 14:37                                         ` david
2007-05-07 19:51                                           ` Pavel Machek
2007-05-07 19:55                                             ` david
2007-05-07 20:38                                               ` Pavel Machek
2007-05-08 17:36                                                 ` Disconnect
2007-04-27 23:59                             ` Linus Torvalds
2007-04-28  0:18                               ` Linus Torvalds
2007-05-05 11:42                                 ` Pavel Machek
2007-04-28  0:50                               ` Paul Mackerras
2007-04-28  1:00                               ` Rafael J. Wysocki
2007-04-28  1:12                                 ` Linus Torvalds
2007-04-28  0:54                                   ` David Lang
2007-04-28  1:44                                   ` Rafael J. Wysocki
2007-04-28  2:51                                     ` Daniel Hazelton
2007-04-28  7:00                                       ` progress meter in s2disk (was Re: Back to the future.) Pavel Machek
2007-04-28  8:50                                     ` Back to the future Pavel Machek
2007-04-28  9:24                                       ` Rafael J. Wysocki
2007-04-28 16:28                                       ` Linus Torvalds
2007-04-28 17:50                                         ` Rafael J. Wysocki
2007-04-28 21:25                                           ` Linus Torvalds
2007-04-28 23:03                                             ` Rafael J. Wysocki
2007-04-28 23:45                                               ` Linus Torvalds
2007-04-29  0:01                                                 ` Nigel Cunningham
2007-04-29  5:01                                                   ` Bojan Smojver
2007-04-29  3:43                                                 ` Kyle Moffett
2007-04-29  8:57                                                 ` Rafael J. Wysocki
2007-04-29  8:59                                                   ` Pavel Machek
2007-04-29  9:32                                                     ` Rafael J. Wysocki
2007-04-29  8:23                                             ` Pavel Machek
2007-04-29  9:22                                               ` Rafael J. Wysocki
2007-04-28 18:32                                       ` David Lang
2007-04-28 19:14                                         ` Rafael J. Wysocki
2007-04-28 18:44                                           ` David Lang
2007-05-03 15:25                           ` Pavel Machek
2007-04-27 22:07                   ` Nigel Cunningham
2007-04-28  1:03                     ` Kyle Moffett
2007-04-28  1:15                       ` Rafael J. Wysocki
2007-04-28  0:51                         ` David Lang
2007-04-28  1:25                         ` Kyle Moffett
2007-05-03 15:10                       ` Pavel Machek
2007-05-03 16:53                         ` Kyle Moffett
2007-05-04  7:52                           ` David Greaves
2007-05-04 13:27                             ` Kyle Moffett
2007-04-28  0:18                   ` Jeremy Fitzhardinge
2007-04-28  1:00                     ` Matthew Garrett
2007-04-28  1:05                       ` Jeremy Fitzhardinge
2007-05-03 15:14                         ` Pavel Machek
2007-06-01 19:00                           ` Eric W. Biederman
2007-04-28  1:08                       ` Rafael J. Wysocki
2007-04-27 20:44           ` Rafael J. Wysocki
2007-04-28 19:09         ` Bill Davidsen
2007-04-26 22:40       ` Pavel Machek
2007-04-27  5:41         ` Pekka Enberg
2007-04-27 14:55           ` Pavel Machek
2007-04-27 21:39             ` Nigel Cunningham
2007-04-26 22:42       ` Pavel Machek
2007-04-26 22:24         ` David Lang
2007-04-26 23:12           ` Pavel Machek
2007-04-26 22:49             ` David Lang
2007-04-26 23:27               ` Pavel Machek
2007-04-26 22:56                 ` David Lang
2007-04-27  0:23               ` Olivier Galibert
2007-04-27 12:49       ` Pavel Machek
2007-04-27 21:26         ` Rafael J. Wysocki
2007-04-27 22:12           ` David Lang
2007-04-26  8:38 ` Jan Engelhardt
2007-04-26  9:33   ` Nigel Cunningham
2007-04-28  0:28 ` Bojan Smojver
     [not found] <8e5l8-7SD-21@gated-at.bofh.it>
     [not found] ` <8e6Ka-1uR-3@gated-at.bofh.it>
     [not found]   ` <8e6TS-1Id-11@gated-at.bofh.it>
     [not found]     ` <8efu9-6mF-1@gated-at.bofh.it>
     [not found]       ` <8ekWV-6FF-33@gated-at.bofh.it>
     [not found]         ` <8el6y-6Sj-5@gated-at.bofh.it>
     [not found]           ` <8elpT-7wY-21@gated-at.bofh.it>
2007-04-28 11:04             ` Bodo Eggert

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=alpine.LFD.0.98.0704260941310.9964@woody.linux-foundation.org \
    --to=torvalds@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nigel@nigel.suspend2.net \
    --cc=penberg@cs.helsinki.fi \
    /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;
as well as URLs for NNTP newsgroup(s).