History

PM / Hibernate: Use get_gendisk to verify partition if resume_file is integer format

Sometimes resume= parameter comes in integer style (e.g. major:minor) and then name_to_dev_t can not detect partition properly. (especially async device like usb, mmc). This patch calls get_gendisk() if resumewait is true and resume_file is in integer format to work around this problem.

Minho Ban committed 14 years ago

Commit 2df83fa1 parent 4e585d22 files · +15 −0Browse files

Showing the changes to kernel (1 of 2 files). Show all

Unified · Split

kernel/power/hibernate.c+13−0
@@ -25,6 +25,8 @@ · 24 unmodified lines
2525 #include <linux/freezer.h>
2626 #include <linux/gfp.h>
2727 #include <linux/syscore_ops.h>
28+#include <linux/ctype.h>
29+#include <linux/genhd.h>
2830 #include <scsi/scsi_scan.h>
2931
3032 #include "power.h"
@@ -722,6 +724,17 @@ static int software_resume(void) · 691 unmodified lines
722724
723725 /* Check if the device is there */
724726 swsusp_resume_device = name_to_dev_t(resume_file);
727+
728+ /*
729+ * name_to_dev_t is ineffective to verify parition if resume_file is in
730+ * integer format. (e.g. major:minor)
731+ */
732+ if (isdigit(resume_file[0]) && resume_wait) {
733+ int partno;
734+ while (!get_gendisk(swsusp_resume_device, &partno))
735+ msleep(10);
736+ }
737+
725738 if (!swsusp_resume_device) {
726739 /*
727740 * Some device discovery might still be in progress; we need