All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <mason@suse.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Larry McVoy <lm@bitmover.com>, Steven Cole <elenstev@mesatop.com>,
	Andrew Morton <akpm@osdl.org>,
	William Lee Irwin III <wli@holomorphy.com>,
	hugh@veritas.com, adi@bitmover.com, scole@lanl.gov,
	support@bitmover.com,
	Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: 1352 NUL bytes at the end of a page? (was Re: Assertion `s && s->tree' failed: The saga continues.)
Date: Mon, 17 May 2004 16:24:50 -0400	[thread overview]
Message-ID: <1084825489.20437.390.camel@watt.suse.com> (raw)
In-Reply-To: <1084807424.20437.60.camel@watt.suse.com>

On Mon, 2004-05-17 at 11:23, Chris Mason wrote:

> You've described it correctly for reiserfs though, we unlock the page
> too soon.  I'll fix the page locking for reiserfs_file_write.  Steven,
> we need to figure out why you're seeing this on ext3.  

Steven, could you give this a try as well?  It is against 2.6.6-mm3, but
should work against vanilla too:

reiserfs_file_write unlocks the pages it operated on before updating
i_size.  This can lead to races with writepage, who checks i_size when
deciding how much of the file to zero out.

This patch also replaces SetPageReferenced with mark_page_accessed() in
reiserfs_file_write

Index: linux.mm/fs/reiserfs/file.c
===================================================================
--- linux.mm.orig/fs/reiserfs/file.c	2004-05-17 13:42:02.000000000 -0400
+++ linux.mm/fs/reiserfs/file.c	2004-05-17 16:22:35.135105528 -0400
@@ -10,6 +10,7 @@
 #include <linux/smp_lock.h>
 #include <asm/uaccess.h>
 #include <linux/pagemap.h>
+#include <linux/swap.h>
 #include <linux/writeback.h>
 #include <linux/blkdev.h>
 #include <linux/buffer_head.h>
@@ -678,10 +679,6 @@
 			     // we only remember error status to report it on
 			     // exit.
 	write_bytes-=count;
-	SetPageReferenced(page);
-	unlock_page(page); // We unlock the page as it was locked by earlier call
-			  // to grab_cache_page
-	page_cache_release(page);
     }
     /* now that we've gotten all the ordered buffers marked dirty,
      * we can safely update i_size and close any running transaction
@@ -718,6 +715,17 @@
 	reiserfs_write_unlock(inode->i_sb);
     }
     th->t_trans_id = 0;
+
+    /* 
+     * we have to unlock the pages after updating i_size, otherwise
+     * we race with writepage
+     */
+    for ( i = 0; i < num_pages ; i++) {
+	struct page *page=prepared_pages[i];
+	unlock_page(page); 
+	mark_page_accessed(page);
+	page_cache_release(page);
+    }
     return retval;
 }
 



  parent reply	other threads:[~2004-05-17 20:22 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <6616858C-A5AF-11D8-A7EA-000A95CC3A8A@lanl.gov>
     [not found] ` <200405122234.06902.elenstev@mesatop.com>
     [not found]   ` <15594C37-A509-11D8-A7EA-000A95CC3A8A@lanl.gov>
     [not found]     ` <20040513183316.GE17965@bitmover.com>
2004-05-14  4:32       ` 1352 NUL bytes at the end of a page? Steven Cole
     [not found]         ` <20040514144617.GE20197@work.bitmover.com>
     [not found]           ` <200405131723.15752.elenstev@mesatop.com>
2004-05-14 16:53             ` 1352 NUL bytes at the end of a page? (was Re: Assertion `s && s->tree' failed: The saga continues.) Andy Isaacson
2004-05-14 17:23               ` Steven Cole
2004-05-15  0:54               ` Steven Cole
2004-05-15  1:55                 ` 1352 NUL bytes at the end of a page? Wayne Scott
2004-05-15  3:15               ` 1352 NUL bytes at the end of a page? (was Re: Assertion `s && s->tree' failed: The saga continues.) Lincoln Dale
2004-05-15  3:41                 ` Andrew Morton
2004-05-15  5:39                   ` Steven Cole
2004-05-16  1:23                   ` Steven Cole
2004-05-16  2:18                     ` Linus Torvalds
2004-05-16  3:44                       ` Linus Torvalds
2004-05-16  4:31                         ` Steven Cole
2004-05-16  4:52                           ` Linus Torvalds
2004-05-16  5:22                             ` Andrea Arcangeli
2004-05-16 15:28                               ` Steven Cole
2004-05-16 17:49                                 ` Rutger Nijlunsing
2004-05-16 20:38                                 ` Andrea Arcangeli
2004-05-16 21:19                                   ` Steven Cole
2004-05-16 21:29                                     ` Andrew Morton
2004-05-16 22:11                                       ` Steven Cole
2004-05-16 23:53                                         ` Andrea Arcangeli
2004-05-17  2:12                                           ` Steven Cole
2004-05-17  8:21                                         ` R. J. Wysocki
2004-05-16  5:54                             ` Steven Cole
2004-05-16  6:09                               ` Andrew Morton
2004-05-16  6:24                                 ` Andrew Morton
2004-05-16 10:01                           ` Andrew Morton
2004-05-16 13:49                             ` Steven Cole
2004-05-18  1:47                       ` Benjamin Herrenschmidt
2004-05-16  3:20                     ` Andrew Morton
2004-05-16  3:58                       ` Linus Torvalds
2004-05-17  2:28                     ` Larry McVoy
2004-05-17  2:42                       ` Linus Torvalds
2004-05-17  3:36                         ` Steven Cole
2004-05-17  5:17                           ` Linus Torvalds
2004-05-17  6:11                             ` Andrew Morton
2004-05-17 13:56                               ` 1352 NUL bytes at the end of a page? Wayne Scott
2004-05-17 15:17                                 ` Theodore Ts'o
2004-05-17 15:20                                   ` Larry McVoy
2004-05-17 15:22                                   ` Linus Torvalds
2004-05-17 15:25                                     ` Larry McVoy
2004-05-17 15:37                                     ` viro
2004-05-17 17:30                                       ` Steven Cole
2004-05-17 17:40                                         ` viro
2004-05-17 17:39                                           ` Steven Cole
2004-05-17 19:06                                             ` viro
2004-05-17 15:40                                     ` Arjan van de Ven
2004-05-17 15:53                                       ` Steven Cole
2004-05-17 16:23                                   ` Davide Libenzi
2004-05-17 16:28                                     ` Davide Libenzi
2004-05-17 14:07                               ` 1352 NUL bytes at the end of a page? (was Re: Assertion `s && s->tree' failed: The saga continues.) Larry McVoy
2004-05-17 14:12                               ` Linus Torvalds
2004-05-17  7:25                             ` Andrew Morton
2004-05-17  7:46                               ` Andrew Morton
2004-05-17  8:39                                 ` Vladimir Saveliev
2004-05-17  8:44                                   ` Andrew Morton
2004-05-17 11:58                                 ` Steven Cole
2004-05-17 14:05                               ` Larry McVoy
2004-05-17 14:14                             ` Larry McVoy
2004-05-17 14:32                               ` Linus Torvalds
2004-05-17 14:52                                 ` Larry McVoy
2004-05-17 15:02                                   ` Linus Torvalds
2004-05-17 15:05                                     ` Larry McVoy
2004-05-17 15:23                                     ` Chris Mason
2004-05-17 15:49                                       ` Steven Cole
2004-05-17 20:24                                       ` Chris Mason [this message]
2004-05-17 21:08                                         ` Steven Cole
2004-05-17 21:29                                           ` Andrew Morton
2004-05-17 22:15                                             ` Steven Cole
2004-05-17 23:52                                             ` Steven Cole
2004-05-18  0:03                                               ` Chris Mason
2004-05-18  0:15                                                 ` Andrew Morton
2004-05-18  0:13                                               ` Andrew Morton
2004-05-18  0:45                                                 ` Steven Cole
2004-05-18  1:34                                                 ` Larry McVoy
2004-05-18  1:42                                                   ` Andrew Morton
2004-05-18  1:56                                                     ` Steven Cole
2004-05-17 14:11                         ` Larry McVoy
     [not found]         ` <200405172142.52780.elenstev@mesatop.com>
     [not found]           ` <Pine.LNX.4.58.0405172056480.25502@ppc970.osdl.org>
     [not found]             ` <200405172319.38853.elenstev@mesatop.com>
2004-05-18 12:42               ` Chris Mason
2004-05-18 14:29                 ` Steven Cole
2004-05-18 14:38               ` Linus Torvalds
2004-05-19 10:53                 ` Steven Cole
2004-05-19 12:10                   ` Chris Mason
2004-05-19 12:20                     ` 1352 NUL bytes at the end of a page? Wayne Scott
2004-05-19 12:42                       ` Nick Piggin
2004-05-19 13:28                         ` Steven Cole
2004-05-19 13:36                           ` Chris Mason
2004-05-19 13:59                             ` Steven Cole
2004-05-19 14:03                               ` Wayne Scott
2004-05-19 14:08                               ` Chris Mason
2004-05-19 14:20                                 ` Steven Cole
2004-05-19 14:45                                 ` Steven Cole
2004-05-19 21:11                                 ` Non-regression for current kernel (was Re: 1352 NUL bytes at the end of a page?) Steven Cole
2004-05-17 15:35 1352 NUL bytes at the end of a page? (was Re: Assertion `s && s->tree' failed: The saga continues.) Albert Cahalan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1084825489.20437.390.camel@watt.suse.com \
    --to=mason@suse.com \
    --cc=adi@bitmover.com \
    --cc=akpm@osdl.org \
    --cc=elenstev@mesatop.com \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm@bitmover.com \
    --cc=scole@lanl.gov \
    --cc=support@bitmover.com \
    --cc=torvalds@osdl.org \
    --cc=wli@holomorphy.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.