aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power
diff options
context:
space:
mode:
authorBarry Song <Baohua.Song@csr.com>2012-01-08 23:56:23 -0500
committerRafael J. Wysocki <rjw@sisk.pl>2012-01-13 18:41:37 -0500
commitee34a37049114303011e154478c63b977bcff24c (patch)
treeb33342752535473f07742206395049233579d12b /kernel/power
parenta029db43986e23677498ab4d84bb61b05de83484 (diff)
PM / Hibernate: Drop the check of swap space size for compressed image
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>
Diffstat (limited to 'kernel/power')
-rw-r--r--kernel/power/swap.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index 3739ecced085..8742fd013a94 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -773,8 +773,7 @@ static int enough_swap(unsigned int nr_pages, unsigned int flags)
773 773
774 pr_debug("PM: Free swap pages: %u\n", free_swap); 774 pr_debug("PM: Free swap pages: %u\n", free_swap);
775 775
776 required = PAGES_FOR_IO + ((flags & SF_NOCOMPRESS_MODE) ? 776 required = PAGES_FOR_IO + nr_pages;
777 nr_pages : (nr_pages * LZO_CMP_PAGES) / LZO_UNC_PAGES + 1);
778 return free_swap > required; 777 return free_swap > required;
779} 778}
780 779
@@ -802,10 +801,12 @@ int swsusp_write(unsigned int flags)
802 printk(KERN_ERR "PM: Cannot get swap writer\n"); 801 printk(KERN_ERR "PM: Cannot get swap writer\n");
803 return error; 802 return error;
804 } 803 }
805 if (!enough_swap(pages, flags)) { 804 if (flags & SF_NOCOMPRESS_MODE) {
806 printk(KERN_ERR "PM: Not enough free swap\n"); 805 if (!enough_swap(pages, flags)) {
807 error = -ENOSPC; 806 printk(KERN_ERR "PM: Not enough free swap\n");
808 goto out_finish; 807 error = -ENOSPC;
808 goto out_finish;
809 }
809 } 810 }
810 memset(&snapshot, 0, sizeof(struct snapshot_handle)); 811 memset(&snapshot, 0, sizeof(struct snapshot_handle));
811 error = snapshot_read_next(&snapshot); 812 error = snapshot_read_next(&snapshot);