Re: Suspend to disk: do we HAVE to use swap?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Rafael J. Wysocki wrote:
> On Tuesday, 31 October 2006 20:05, Alistair John Strachan wrote:
>> On Tuesday 31 October 2006 17:40, Luca Tettamanti wrote:
>>> Alistair John Strachan <[email protected]> ha scritto:
>>>> On Tuesday 31 October 2006 06:16, Rafael J. Wysocki wrote:
>>>> [snip]
>>>>
>>>>> However, we already have code that allows us to use swap files for the
>>>>> suspend and turning a regular file into a swap file is as easy as
>>>>> running 'mkswap' and 'swapon' on it.
>>>> How is this feature enabled? I don't see it in 2.6.19-rc4.
>>> Swap files have been supported for ages. suspend-to-swapfile is very
>>> new, you need a -mm kernel and userspace suspend from CVS:
>>> http://suspend.sf.net
>> I know, I use swap files, and not a partition. This has prevented me from 
>> using suspend to disk "for ages". ;-)
>>
>> Is userspace suspend REQUIRED for this feature?
> 
> No, but unfortunately one piece is still missing: You'll need to figure out
> where your swap file's header is located.
> 
> However, if you apply the attached patch the kernel will tell you where it is
> (after you do 'swapon' grep dmesg for 'swap' and use the value in the
> 'offset' field).

Nobody has answered this one yet:  Once you 'swapon' doesn't the kernel
have (require?) the swap file opened writable?  Simple mode:

  IS THIS NOT EXTREMELY DANGEROUS?

> 
> Please read Documentation/power/swsusp-and-swap-files.txt before you begin. 
> 
> Greetings,
> Rafael
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> ---
>  mm/swapfile.c |   15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> Index: linux-2.6.18-rc6-mm2/mm/swapfile.c
> ===================================================================
> --- linux-2.6.18-rc6-mm2.orig/mm/swapfile.c
> +++ linux-2.6.18-rc6-mm2/mm/swapfile.c
> @@ -1047,7 +1047,8 @@ add_swap_extent(struct swap_info_struct 
>   * This is extremely effective.  The average number of iterations in
>   * map_swap_page() has been measured at about 0.3 per page.  - akpm.
>   */
> -static int setup_swap_extents(struct swap_info_struct *sis, sector_t *span)
> +static int setup_swap_extents(struct swap_info_struct *sis, sector_t *span,
> +                              sector_t *start)
>  {
>  	struct inode *inode;
>  	unsigned blocks_per_page;
> @@ -1060,6 +1061,7 @@ static int setup_swap_extents(struct swa
>  	int nr_extents = 0;
>  	int ret;
>  
> +	*start = 0;
>  	inode = sis->swap_file->f_mapping->host;
>  	if (S_ISBLK(inode->i_mode)) {
>  		ret = add_swap_extent(sis, 0, sis->max, 0);
> @@ -1114,6 +1116,8 @@ static int setup_swap_extents(struct swa
>  				lowest_block = first_block;
>  			if (first_block > highest_block)
>  				highest_block = first_block;
> +		} else {
> +			*start = first_block;
>  		}
>  
>  		/*
> @@ -1407,7 +1411,7 @@ asmlinkage long sys_swapon(const char __
>  	int swap_header_version;
>  	unsigned int nr_good_pages = 0;
>  	int nr_extents = 0;
> -	sector_t span;
> +	sector_t span, start;
>  	unsigned long maxpages = 1;
>  	int swapfilesize;
>  	unsigned short *swap_map;
> @@ -1608,7 +1612,7 @@ asmlinkage long sys_swapon(const char __
>  		p->swap_map[0] = SWAP_MAP_BAD;
>  		p->max = maxpages;
>  		p->pages = nr_good_pages;
> -		nr_extents = setup_swap_extents(p, &span);
> +		nr_extents = setup_swap_extents(p, &span, &start);
>  		if (nr_extents < 0) {
>  			error = nr_extents;
>  			goto bad_swap;
> @@ -1628,9 +1632,10 @@ asmlinkage long sys_swapon(const char __
>  	total_swap_pages += nr_good_pages;
>  
>  	printk(KERN_INFO "Adding %uk swap on %s.  "
> -			"Priority:%d extents:%d across:%lluk\n",
> +			"Priority:%d extents:%d across:%lluk offset:%llu\n",
>  		nr_good_pages<<(PAGE_SHIFT-10), name, p->prio,
> -		nr_extents, (unsigned long long)span<<(PAGE_SHIFT-10));
> +		nr_extents, (unsigned long long)span<<(PAGE_SHIFT-10),
> +		(unsigned long long)start);
>  
>  	/* insert swap space into swap_list: */
>  	prev = -1;

- --
    We will enslave their women, eat their children and rape their
    cattle!
                  -- Bosc, Evil alien overlord from the fifth dimension
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQIVAwUBRUem1Qs1xW0HCTEFAQJfoA//QUbG6qptY4D0BMqBqq/v6BZugVVznVvf
vGsmdh9vE8ZbeVYsXbLqA4twMziI+1FkH+1f2PyYahd1zSyEqqi9V1i7hLVL1U7b
7XTjvezU649IcxcbGvynJFvCmmFSfM4DiTQ5auyyhuxjzpAuZOdXq6q0RGMoYW0A
yKS8/6TZbqRqzjjuyiMs13MdgNlv7d6h4gVCKDbevoresexqcGfi4jWMugpcTvdA
0P4/H+TVK3duX2V7pJlnqqqS8rxyuUVMjnoRpC3wYN/NAJo8ZsS5/LBLQiTK/jp0
jUJUMXwQhQ5EV/h4X8cgXclfF2qslM3+x7XF5tgvgMBHY0WXFmVKLakFAYA06fQF
Re9eiAxpPDeOTmoH9ZaIUqsN7qhMMrqGQtGOvFl87n43p4uWfcOJUqzaz/fDhUNK
EvF4BdKcAfH4UivskHmZ8AgizUGhyiVrK/3ENN6YCcK2vj0UPiSq2jy/2l8Oe1Pe
Jq6C5GhlrgSR886I2FPaWwO314AADd7Y5tsgSyq/tBM6tNJC1avUtBaH3/c3MRhm
4kHux6Qbm/hbuzOzhrgCPgs52LaknXEM6OmYN105vn07D2FJA4pvYMvjDlWGEpCq
ESz42MQAMKFgtvztvQOGns4PqLc48en5//zOIVooV4z9pQ+2+NvxI2BsRa7xN2jw
B+66HoG4+Z8=
=+ete
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux