* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.