diff options
Diffstat (limited to 'Documentation/power/swsusp-and-swap-files.txt')
-rw-r--r-- | Documentation/power/swsusp-and-swap-files.txt | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Documentation/power/swsusp-and-swap-files.txt b/Documentation/power/swsusp-and-swap-files.txt new file mode 100644 index 000000000000..06f911a5f885 --- /dev/null +++ b/Documentation/power/swsusp-and-swap-files.txt | |||
@@ -0,0 +1,60 @@ | |||
1 | Using swap files with software suspend (swsusp) | ||
2 | (C) 2006 Rafael J. Wysocki <rjw@sisk.pl> | ||
3 | |||
4 | The Linux kernel handles swap files almost in the same way as it handles swap | ||
5 | partitions and there are only two differences between these two types of swap | ||
6 | areas: | ||
7 | (1) swap files need not be contiguous, | ||
8 | (2) the header of a swap file is not in the first block of the partition that | ||
9 | holds it. From the swsusp's point of view (1) is not a problem, because it is | ||
10 | already taken care of by the swap-handling code, but (2) has to be taken into | ||
11 | consideration. | ||
12 | |||
13 | In principle the location of a swap file's header may be determined with the | ||
14 | help of appropriate filesystem driver. Unfortunately, however, it requires the | ||
15 | filesystem holding the swap file to be mounted, and if this filesystem is | ||
16 | journaled, it cannot be mounted during resume from disk. For this reason to | ||
17 | identify a swap file swsusp uses the name of the partition that holds the file | ||
18 | and the offset from the beginning of the partition at which the swap file's | ||
19 | header is located. For convenience, this offset is expressed in <PAGE_SIZE> | ||
20 | units. | ||
21 | |||
22 | In order to use a swap file with swsusp, you need to: | ||
23 | |||
24 | 1) Create the swap file and make it active, eg. | ||
25 | |||
26 | # dd if=/dev/zero of=<swap_file_path> bs=1024 count=<swap_file_size_in_k> | ||
27 | # mkswap <swap_file_path> | ||
28 | # swapon <swap_file_path> | ||
29 | |||
30 | 2) Use an application that will bmap the swap file with the help of the | ||
31 | FIBMAP ioctl and determine the location of the file's swap header, as the | ||
32 | offset, in <PAGE_SIZE> units, from the beginning of the partition which | ||
33 | holds the swap file. | ||
34 | |||
35 | 3) Add the following parameters to the kernel command line: | ||
36 | |||
37 | resume=<swap_file_partition> resume_offset=<swap_file_offset> | ||
38 | |||
39 | where <swap_file_partition> is the partition on which the swap file is located | ||
40 | and <swap_file_offset> is the offset of the swap header determined by the | ||
41 | application in 2) (of course, this step may be carried out automatically | ||
42 | by the same application that determies the swap file's header offset using the | ||
43 | FIBMAP ioctl) | ||
44 | |||
45 | OR | ||
46 | |||
47 | Use a userland suspend application that will set the partition and offset | ||
48 | with the help of the SNAPSHOT_SET_SWAP_AREA ioctl described in | ||
49 | Documentation/power/userland-swsusp.txt (this is the only method to suspend | ||
50 | to a swap file allowing the resume to be initiated from an initrd or initramfs | ||
51 | image). | ||
52 | |||
53 | Now, swsusp will use the swap file in the same way in which it would use a swap | ||
54 | partition. In particular, the swap file has to be active (ie. be present in | ||
55 | /proc/swaps) so that it can be used for suspending. | ||
56 | |||
57 | Note that if the swap file used for suspending is deleted and recreated, | ||
58 | the location of its header need not be the same as before. Thus every time | ||
59 | this happens the value of the "resume_offset=" kernel command line parameter | ||
60 | has to be updated. | ||