public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tail data corruption on mempressure
@ 2002-01-03  7:16 Oleg Drokin
  0 siblings, 0 replies; only message in thread
From: Oleg Drokin @ 2002-01-03  7:16 UTC (permalink / raw)
  To: marcelo, linux-kernel, reiserfs-dev

[-- Attachment #1: Type: text/plain, Size: 233 bytes --]

Hello!

    This patch fixes a bug when mmap-write to a file tail and subsequent read cause written data to be lost
    due to page-cache interacting mistake in low number of free buffers situation.
    Please apply.

Bye,
     Oleg

[-- Attachment #2: tail_data_corruption_on_mempressure-1.diff --]
[-- Type: text/plain, Size: 947 bytes --]

--- linux/fs/reiserfs/inode.c.orig	Thu Dec 20 11:07:05 2001
+++ linux/fs/reiserfs/inode.c	Thu Dec 20 19:03:51 2001
@@ -325,6 +325,16 @@
     */
     if (buffer_uptodate(bh_result)) {
         goto finished ;
+    } else 
+	/*
+	** grab_tail_page can trigger calls to reiserfs_get_block on up to date
+	** pages without any buffers.  If the page is up to date, we don't want
+	** read old data off disk.  Set the up to date bit on the buffer instead
+	** and jump to the end
+	*/
+	    if (Page_Uptodate(bh_result->b_page)) {
+		mark_buffer_uptodate(bh_result, 1);
+		goto finished ;
     }
 
     // read file tail into part of page
@@ -833,7 +843,7 @@
 	}
 	if (retval == POSITION_FOUND) {
 	    reiserfs_warning ("vs-825: reiserfs_get_block: "
-			      "%k should not be found\n", &key);
+			      "%K should not be found\n", &key);
 	    retval = -EEXIST;
 	    if (allocated_block_nr)
 	        reiserfs_free_block (&th, allocated_block_nr);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-01-03  7:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-01-03  7:16 [PATCH] tail data corruption on mempressure Oleg Drokin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox