On Tue, 2005-05-03 at 07:43, Jan Kara wrote:
> Hello,
>
> > Started seeing some odd behaviour with recent kernels, haven't been able to
> > run it down, could use some suggestions/help.
> >
> > Running re-aim7 with 2.6.12-rc2 and rc3, if I use xfs, jfs, or
> > reiserfs things work just fine.
> >
> > With ext3, the test stalls, such that:
> > CPU is 50% idle, 50% waiting IO (top)
> > vmstat shows one process blocked wio
> I've looked through your dumps and I spotted where is the problem -
> it's our well known and beloved lock inversion between PageLock and
> transaction start (giving CC to Badari who's the author of the patch
> that introduced it AFAIK).
Yuck. It definitely not intentional.
> The correct order is: first get PageLock and *then* start transaction.
> But in ext3_writeback_writepages() first ext3_journal_start() is called
> and then __mpage_writepages is called that tries to do LockPage and
> deadlock is there. Badari, could you please fix that (sadly I think that
> would not be easy)? Maybe we should back out those changes until it gets
> fixed...
Hmm.. let me take a closer look. You are right, its not going to be
simple fix.
Cliff, here is the patch to backout writepages() for ext3. Can you
verify that problems goes away with this patch ?
Thanks,
Badari
--- linux-2.6.12-rc3.org/fs/ext3/inode.c 2005-05-02 22:28:30.000000000 -0700
+++ linux-2.6.12-rc3/fs/ext3/inode.c 2005-05-02 22:29:00.000000000 -0700
@@ -1621,7 +1621,9 @@ static struct address_space_operations e
.readpage = ext3_readpage,
.readpages = ext3_readpages,
.writepage = ext3_writeback_writepage,
+#if 0
.writepages = ext3_writeback_writepages,
+#endif
.sync_page = block_sync_page,
.prepare_write = ext3_prepare_write,
.commit_write = ext3_writeback_commit_write,
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]