

I waffled over this for ages.  On balance, I think it's best to mark those
bh's as uptodate.

And on reflection, I'm not sure why we go bringing ramdisk blockdev pages
uptodate all over the place anyway.  But ramdisk is weird and it passes
testing.  Let those dogs sleep.


---

 25-akpm/drivers/block/rd.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletion(-)

diff -puN drivers/block/rd.c~ramdisk-buffer-uptodate-fix drivers/block/rd.c
--- 25/drivers/block/rd.c~ramdisk-buffer-uptodate-fix	2004-05-23 01:42:29.891131736 -0700
+++ 25-akpm/drivers/block/rd.c	2004-05-23 01:42:29.894131280 -0700
@@ -108,8 +108,21 @@ static void make_page_uptodate(struct pa
 		struct buffer_head *head = bh;
 
 		do {
-			if (!buffer_uptodate(bh))
+			if (!buffer_uptodate(bh)) {
 				memset(bh->b_data, 0, bh->b_size);
+				/*
+				 * akpm: I'm totally undecided about this.  The
+				 * buffer has just been magically brought "up to
+				 * date", but nobody should want to be reading
+				 * it anyway, because it hasn't been used for
+				 * anything yet.  It is still in a "not read
+				 * from disk yet" state.
+				 *
+				 * But non-uptodate buffers against an uptodate
+				 * page are against the rules.  So do it anyway.
+				 */
+				 set_buffer_uptodate(bh);
+			}
 		} while ((bh = bh->b_this_page) != head);
 	} else {
 		memset(page_address(page), 0, PAGE_CACHE_SIZE);

_
