All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <mason@suse.com>
To: Marcelo Tosatti <marcelo@conectiva.com.br>
Cc: Xuan Baldauf <xuan--lkml@baldauf.org>,
	linux-kernel@vger.kernel.org, andrea@suse.de,
	"reiserfs-list@namesys.com" <reiserfs-list@namesys.com>
Subject: Re: VM deadlock
Date: Wed, 27 Jun 2001 15:36:49 -0400	[thread overview]
Message-ID: <910160000.993670608@tiny> (raw)
In-Reply-To: <Pine.LNX.4.21.0106271440150.1745-100000@freak.distro.conectiva>



On Wednesday, June 27, 2001 02:43:57 PM -0300 Marcelo Tosatti
<marcelo@conectiva.com.br> wrote:
> 
> Looking at http://lists.omnipotent.net/reiserfs/200106/msg00214.html:

Also from Xuan ;-)

> 
>>> EIP; c0128228 <page_launder+b8/90c>   <=====
> Trace; c01303df <refill_freelist+1f/54>
> Trace; c01307e2 <getblk+f2/108>
> Trace; c5141308 <END_OF_CODE+4e978b8/????>
> Trace; c0176c4b <do_journal_end+63f/ac0>
> Trace; c5160848 <END_OF_CODE+4eb6df8/????>
> Trace; c01759e6 <journal_end_sync+16/1c>
> Trace; c015e23a <reiserfs_write_inode+56/64>
> Trace; c0141055 <try_to_sync_unused_inodes+101/1a8>
> Trace; c01416dd <prune_icache+105/114>
> Trace; c014170d <shrink_icache_memory+21/30>
> Trace; c0128d67 <do_try_to_free_pages+2b/58>
> Trace; c0128deb <kswapd+57/e4>
> Trace; c0105434 <kernel_thread+28/38>
> 
> 
> 
> refill_freelist() calls page_launder(GFP_BUFFER). Now GFP_BUFFER _will_
> block writting out buffers with try_to_free_buffers().

Grrr, how did I miss this before?  I thought Xuan's hang went away after
pre3, so I didn't look into this trace hard enough.  

Reiserfs expects write_inode() calls initiated by kswapd to always have
sync==0.  Otherwise, kswapd ends up waiting on the log, which isn't what we
want at all.

The dirty inode callback ensures there are no dirty inodes that haven't
been logged.  I took the sync parameter to mean it is initiated by fsync or
O_SYNC, so I trigger a full commit when sync == 1.

So, my choices are to ignore sync == 1 write_inode calls when kswapd is
doing it, or make a private inode dirty list.

> 
> Maybe thats the reason for the deadlock we're seeing here at this specific
> trace ? 
> 

The trace above is caused by the dirty inode problem, the I think the more
recent trace is something different.

-chris


  reply	other threads:[~2001-06-27 19:38 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-27 14:27 VM deadlock Xuan Baldauf
2001-06-27 13:11 ` Marcelo Tosatti
2001-06-27 16:13   ` Xuan Baldauf
2001-06-27 15:09 ` Chris Mason
2001-06-27 16:20   ` Xuan Baldauf
2001-06-27 17:43   ` Marcelo Tosatti
2001-06-27 19:36     ` Chris Mason [this message]
2001-06-27 19:43       ` Rik van Riel
2001-06-27 20:24         ` Chris Mason
2001-06-27 20:36           ` Rik van Riel
2001-06-27 20:52             ` Chris Mason
2001-06-28  3:21           ` Andrew Morton
2001-06-28 12:53             ` Chris Mason
2001-06-28 14:08               ` Andrew Morton
2001-06-28 14:25                 ` Chris Mason
2001-06-27 19:50       ` [reiserfs-list] " Xuan Baldauf
2001-06-27 18:16   ` Rik van Riel
2001-06-27 18:38     ` Chris Mason

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=910160000.993670608@tiny \
    --to=mason@suse.com \
    --cc=andrea@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo@conectiva.com.br \
    --cc=reiserfs-list@namesys.com \
    --cc=xuan--lkml@baldauf.org \
    /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.