From: Chris Mason <mason@suse.com>
To: Michael Gaughen <mgaughen@polyserve.com>
Cc: reiserfs-list@namesys.com
Subject: Re: BUG in reiserfs_write_full_page().
Date: 18 Jul 2003 09:23:04 -0400 [thread overview]
Message-ID: <1058534583.7878.351.camel@tiny.suse.com> (raw)
In-Reply-To: <3F171ABF.6080601@polyserve.com>
On Thu, 2003-07-17 at 17:53, Michael Gaughen wrote:
> Chris Mason wrote:
>
> >
> >Hmmm, the allocation masks are supposed to be set such that writepage
> >won't get called. I'll take a look. How easy is it to reproduce? If
> >you have any tests cases that can trigger it, please send them along.
> >
>
> Actually, the problem may have to do with the common journal_info kept
> within the task structure. Looking at ext3_writepage, they have this to
> say:
>
> /*
> * We give up here if we're reentered, because it might be
> * for a different filesystem. One *could* look for a
> * nested transaction opportunity.
> */
> lock_kernel();
> if (ext3_journal_current_handle())
> goto out_fail;
>
> and in the case of out_fail, they do:
>
> unlock_kernel();
> SetPageDirty(page);
> UnlockPage(page);
> return ret;
>
> So, in the case of reiserfs_write_full_page(), the BUG() is falsely
> triggered
> due to a transaction that was started on another filesystem (ext3). And the
> fix would simply be to do something along the lines of ext3...
The reiserfs data logging actually does more than ext3 to make sure
things get along, recording the super of the filesystem holding the
transaction. So, it is actually possible to start a new non-nested
transaction.
But, we shouldn't have to. Other parts of the OS should be protecting
us from a writepage being called at this time, which is why the bug is
there. Someone did a non GFP_NOFS allocation with a transaction
running, which can trigger a variety of deadlocks, especially from
shrink_icache and friends.
-chris
next prev parent reply other threads:[~2003-07-18 13:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-17 21:19 BUG in reiserfs_write_full_page() Michael Gaughen
2003-07-17 21:33 ` Chris Mason
2003-07-17 21:53 ` Michael Gaughen
2003-07-18 13:23 ` Chris Mason [this message]
2003-07-18 13:45 ` Nikita Danilov
2003-07-18 14:00 ` Chris Mason
2003-07-18 18:42 ` Michael Gaughen
2003-07-21 21:24 ` Michael Gaughen
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=1058534583.7878.351.camel@tiny.suse.com \
--to=mason@suse.com \
--cc=mgaughen@polyserve.com \
--cc=reiserfs-list@namesys.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.