All of lore.kernel.org
 help / color / mirror / Atom feed
From: Edward Shishkin <edward.shishkin@gmail.com>
To: Ivan Shapovalov <intelfx100@gmail.com>
Cc: Oleg Drokin <green@linuxhacker.ru>, reiserfs-devel@vger.kernel.org
Subject: Re: [PATCH 3/3] reiser4: in our own sync writes, mark pages dirty before marking them writeback.
Date: Thu, 15 Oct 2015 19:20:17 +0200	[thread overview]
Message-ID: <561FE051.3000104@gmail.com> (raw)
In-Reply-To: <1444849590.13210.3.camel@gmail.com>

Hello,

So the tail conversion is the culprit?
It's quite realistic...
I am currently on vacations,
I'll take a look at this at the end of October
more carefully.

Thanks!
Edward.



On 10/14/2015 09:06 PM, Ivan Shapovalov wrote:
> On 2015-10-14 at 13:55 +0300, Ivan Shapovalov wrote:
>> On 2015-10-14 at 13:05 +0300, Ivan Shapovalov wrote:
>>> On 2015-10-12 at 11:07 +0200, Edward Shishkin wrote:
>>>> [...]
>>> So, I've added three non-fatal checks right before
>>> set_page_writeback():
>>> - PageDirty(pg)
>>> - JF_ISSET(cur, JNODE_DIRTY)
>>> - pg->mapping->host->i_wb != NULL
>>>
>>> In almost all times when either of the checks is triggered,
>>> the first two checks are triggered at once (i. e. neither page nor
>>> jnode is dirty, but i_wb is not NULL). This happens with both
>>> formatted
>>> nodes (jnode_is_znode), unformatted nodes (jnode_is_unformatted)
>>> and
>>> other nodes.
>>>
>>> And, finally, there are very few warnings where jnode _is_ dirty,
>>> but
>>> the page _isn't_. On the first such warning i_wb is also NULL. And,
>>> just as you've suspected, this happens with an unformatted node.
>>>
>>> I'll try to add a backtrace buffer into struct jnode and generate a
>>> backtrace there on each jnode dirtying attempt... and then print it
>>> for
>>> the problematic jnode.
>>>
>> So, here it is. On all occurrences the backtrace is the same.
>>
>> [...]
>
> Hmm. This obvious fix "works",  but causes an assertion on rootfs unmount:
>
> "list_empty(&get_super_private(super)->all_jnodes)" in init_super.c:55 (no maintainer-id).
>
> Why?
>
> ---
>   fs/reiser4/plugin/file/tail_conversion.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/fs/reiser4/plugin/file/tail_conversion.c b/fs/reiser4/plugin/file/tail_conversion.c
> index 6ffa900..3b4e77d 100644
> --- a/fs/reiser4/plugin/file/tail_conversion.c
> +++ b/fs/reiser4/plugin/file/tail_conversion.c
> @@ -175,6 +175,7 @@ static int replace(struct inode *inode, struct page **pages, unsigned nr_pages,
>   								i_mapping));
>   		if (result)
>   			break;
> +		set_page_dirty_notag(pages[i]);
>   		unlock_page(pages[i]);
>   		result = find_or_create_extent(pages[i]);
>   		if (result) {


  reply	other threads:[~2015-10-15 17:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-09 11:16 [PATCH 0/3] reiser4: another batch of fixes for 4.2 Ivan Shapovalov
2015-10-09 11:16 ` [PATCH 1/3] reiser4: remove last traces of JNODE_NEW in the debugging code Ivan Shapovalov
2015-10-09 11:16 ` [PATCH 2/3] reiser4: call account_page_redirty() on re-dirtying pages before giving them to entd Ivan Shapovalov
2015-10-09 11:16 ` [PATCH 3/3] reiser4: in our own sync writes, mark pages dirty before marking them writeback Ivan Shapovalov
2015-10-09 13:27   ` Edward Shishkin
2015-10-09 13:50     ` Ivan Shapovalov
2015-10-09 14:55       ` Edward Shishkin
2015-10-09 16:13         ` Ivan Shapovalov
2015-10-09 16:27           ` Oleg Drokin
2015-10-09 16:29             ` Ivan Shapovalov
2015-10-09 17:14         ` Ivan Shapovalov
2015-10-09 20:23           ` Edward Shishkin
2015-10-10  7:19             ` Dušan Čolić
2015-10-10 10:44             ` Ivan Shapovalov
2015-10-10 15:03               ` Edward Shishkin
2015-10-10 16:51                 ` Oleg Drokin
2015-10-12  9:10                   ` Edward Shishkin
2015-10-12  9:07               ` Edward Shishkin
2015-10-14 10:05                 ` Ivan Shapovalov
2015-10-14 10:55                   ` Ivan Shapovalov
2015-10-14 19:06                     ` Ivan Shapovalov
2015-10-15 17:20                       ` Edward Shishkin [this message]
2015-10-24  7:17                         ` Ivan Shapovalov
2015-11-04 18:09                         ` Ivan Shapovalov
2015-11-09 11:40                           ` Edward Shishkin
2015-10-09 15:29   ` Oleg Drokin

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=561FE051.3000104@gmail.com \
    --to=edward.shishkin@gmail.com \
    --cc=green@linuxhacker.ru \
    --cc=intelfx100@gmail.com \
    --cc=reiserfs-devel@vger.kernel.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.