From: Pavel Machek <pavel@ucw.cz>

This removes one-line functions so that code is readable again.  Test is
added so that we do not ignore I/O errors.  It also turns io_schedule()
into yield() as suggested by Andrea.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/kernel/power/swsusp.c |   23 ++++++++---------------
 1 files changed, 8 insertions(+), 15 deletions(-)

diff -puN kernel/power/swsusp.c~swsusp-clean-up-reading kernel/power/swsusp.c
--- 25/kernel/power/swsusp.c~swsusp-clean-up-reading	2004-09-26 11:30:14.113755320 -0700
+++ 25-akpm/kernel/power/swsusp.c	2004-09-26 11:30:14.118754560 -0700
@@ -990,24 +990,14 @@ static int __init swsusp_pagedir_relocat
 
 static atomic_t io_done = ATOMIC_INIT(0);
 
-static void start_io(void)
-{
-	atomic_set(&io_done,1);
-}
-
 static int end_io(struct bio * bio, unsigned int num, int err)
 {
-	atomic_set(&io_done,0);
+	if (!test_bit(BIO_UPTODATE, &bio->bi_flags))
+		panic("I/O error reading memory image");
+	atomic_set(&io_done, 0);
 	return 0;
 }
 
-static void wait_io(void)
-{
-	while(atomic_read(&io_done))
-		io_schedule();
-}
-
-
 static struct block_device * resume_bdev;
 
 /**
@@ -1042,9 +1032,12 @@ static int submit(int rw, pgoff_t page_o
 
 	if (rw == WRITE)
 		bio_set_pages_dirty(bio);
-	start_io();
+
+	atomic_set(&io_done, 1);
 	submit_bio(rw | (1 << BIO_RW_SYNC), bio);
-	wait_io();
+	while (atomic_read(&io_done))
+		yield();
+
  Done:
 	bio_put(bio);
 	return error;
_