

- Robustify the logic a bit.  At present if writepage() returns an error
  which is not -EIO or -ENOSPC we lose track of it.

  So instead, treat all unknown errors as -EIO.



 fs/mpage.c  |   12 ++++++------
 mm/vmscan.c |    6 +++---
 2 files changed, 9 insertions(+), 9 deletions(-)

diff -puN fs/mpage.c~awe-use-gfp_flags-fixes fs/mpage.c
--- 25/fs/mpage.c~awe-use-gfp_flags-fixes	2003-08-02 03:40:29.000000000 -0700
+++ 25-akpm/fs/mpage.c	2003-08-02 03:40:29.000000000 -0700
@@ -566,10 +566,10 @@ confused:
 	/*
 	 * The caller has a ref on the inode, so *mapping is stable
 	 */
-	if (*ret == -EIO)
-		set_bit(AS_EIO, &mapping->flags);
-	else if (*ret == -ENOSPC)
+	if (*ret == -ENOSPC)
 		set_bit(AS_ENOSPC, &mapping->flags);
+	else
+		set_bit(AS_EIO, &mapping->flags);
 out:
 	return bio;
 }
@@ -671,10 +671,10 @@ mpage_writepages(struct address_space *m
 					test_clear_page_dirty(page)) {
 			if (writepage) {
 				ret = (*writepage)(page, wbc);
-				if (ret == -EIO)
-					set_bit(AS_EIO, &mapping->flags);
-				else if (ret == -ENOSPC)
+				if (ret == -ENOSPC)
 					set_bit(AS_ENOSPC, &mapping->flags);
+				else
+					set_bit(AS_EIO, &mapping->flags);
 			} else {
 				bio = mpage_writepage(bio, page, get_block,
 					&last_block_in_bio, &ret, wbc);
diff -puN mm/vmscan.c~awe-use-gfp_flags-fixes mm/vmscan.c
--- 25/mm/vmscan.c~awe-use-gfp_flags-fixes	2003-08-02 03:40:29.000000000 -0700
+++ 25-akpm/mm/vmscan.c	2003-08-02 03:40:29.000000000 -0700
@@ -252,10 +252,10 @@ static void handle_write_error(struct ad
 {
 	lock_page(page);
 	if (page->mapping == mapping) {
-		if (error == -EIO)
-			set_bit(AS_EIO, &mapping->flags);
-		else if (error == -ENOSPC)
+		if (error == -ENOSPC)
 			set_bit(AS_ENOSPC, &mapping->flags);
+		else
+			set_bit(AS_EIO, &mapping->flags);
 	}
 	unlock_page(page);
 }

_
