PM / Hibernate: Drop the check of swap space size for compressed image
authorBarry Song <Baohua.Song@csr.com>
Mon, 9 Jan 2012 04:56:23 +0000 (12:56 +0800)
committerRafael J. Wysocki <rjw@sisk.pl>
Fri, 13 Jan 2012 23:41:37 +0000 (00:41 +0100)
For compressed image, the space required is not known until
we finish compressing and writing all pages.
This patch drops the check, and if swap space is not enough
finally, system can still restore to normal after writing
swap fails for compressed images.

Signed-off-by: Barry Song <Baohua.Song@csr.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
kernel/power/swap.c

index 3739ecced085db0141557feec608bb3eccbb0c07..8742fd013a94e3b56efdbf91cf27c709679615e4 100644 (file)
@@ -773,8 +773,7 @@ static int enough_swap(unsigned int nr_pages, unsigned int flags)
 
        pr_debug("PM: Free swap pages: %u\n", free_swap);
 
-       required = PAGES_FOR_IO + ((flags & SF_NOCOMPRESS_MODE) ?
-               nr_pages : (nr_pages * LZO_CMP_PAGES) / LZO_UNC_PAGES + 1);
+       required = PAGES_FOR_IO + nr_pages;
        return free_swap > required;
 }
 
@@ -802,10 +801,12 @@ int swsusp_write(unsigned int flags)
                printk(KERN_ERR "PM: Cannot get swap writer\n");
                return error;
        }
-       if (!enough_swap(pages, flags)) {
-               printk(KERN_ERR "PM: Not enough free swap\n");
-               error = -ENOSPC;
-               goto out_finish;
+       if (flags & SF_NOCOMPRESS_MODE) {
+               if (!enough_swap(pages, flags)) {
+                       printk(KERN_ERR "PM: Not enough free swap\n");
+                       error = -ENOSPC;
+                       goto out_finish;
+               }
        }
        memset(&snapshot, 0, sizeof(struct snapshot_handle));
        error = snapshot_read_next(&snapshot);