All of lore.kernel.org
 help / color / mirror / Atom feed
From: Likai <li.kai4@h3c.com>
To: "Theodore Y. Ts'o" <tytso@mit.edu>, Jan Kara <jack@suse.cz>
Cc: "linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"joseph.qi@linux.alibaba.com" <joseph.qi@linux.alibaba.com>,
	"gechangwei@live.cn" <gechangwei@live.cn>,
	Wangyong <wang.yongD@h3c.com>, Wangxibo <wang.xibo@h3c.com>
Subject: Re: [PATCH] jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal
Date: Mon, 20 Jan 2020 06:30:33 +0000	[thread overview]
Message-ID: <453bb3b47a214a429abb5c2e38c494c8@h3c.com> (raw)
In-Reply-To: 20200117212657.GF448999@mit.edu

On 2020/1/18 5:27, Theodore Y. Ts'o wrote:
> On Tue, Jan 14, 2020 at 11:31:19AM +0100, Jan Kara wrote:
>> Thanks for the patch! Just some small comments below:
>>
>> On Sat 11-01-20 10:25:42, Kai Li wrote:
>>> Fixes: 85e0c4e89c1b "jbd2: if the journal is aborted then don't allow update of the log tail"
>> This tag should come at the bottom of the changelog (close to your
>> Signed-off-by).
>>
>>> If journal is dirty when mount, it will be replayed but jbd2 sb
>>> log tail cannot be updated to mark a new start because
>>> journal->j_flags has already been set with JBD2_ABORT first
>>> in journal_init_common.
>>> When a new transaction is committed, it will be recorded in block 1
>>> first(journal->j_tail is set to 1 in journal_reset). If emergency
>>> restart again before journal super block is updated unfortunately,
>>> the new recorded trans will not be replayed in the next mount.
>>> It is danerous which may lead to metadata corruption for file system.
>> I'd slightly rephrase the text here so that it is more easily readable and
>> correct some grammar mistakes. Something like:
>>
>> If the journal is dirty when the filesystem is mounted, jbd2 will replay
>> the journal but the journal superblock will not be updated by
>> journal_reset() because JBD2_ABORT flag is still set (it was set in
>> journal_init_common()). This is problematic because when a new transaction
>> is then committed, it will be recorded in block 1 (journal->j_tail was set
>> to 1 in journal_reset()). If unclean shutdown happens again before the
>> journal superblock is updated, the new recorded transaction will not be
>> replayed during the next mount (because of stale sb->s_start and
>> sb->s_sequence values) which can lead to filesystem corruption.
>>
>> Otherwise the patch looks good to me so feel free to add:
>>
>> Reviewed-by: Jan Kara <jack@suse.cz>
>>
>> (again this is added to the bottom of the changelog like the 'Fixes' tag or
>> 'Signed-off-by' tag).
> Thanks, applied with a fixed up commit description.
>
> 		       	     	       - Ted
>
Sorry for reply so late due to my business trip recently.  This new
comment is ok and more clear. Thanks.

                                                                       
                                                                       
      - Kai


  reply	other threads:[~2020-01-20  6:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-11  2:25 [PATCH] jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal Kai Li
2020-01-14 10:31 ` Jan Kara
2020-01-17 21:26   ` Theodore Y. Ts'o
2020-01-20  6:30     ` Likai [this message]
2020-12-02 12:01       ` yebin

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=453bb3b47a214a429abb5c2e38c494c8@h3c.com \
    --to=li.kai4@h3c.com \
    --cc=gechangwei@live.cn \
    --cc=jack@suse.cz \
    --cc=joseph.qi@linux.alibaba.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tytso@mit.edu \
    --cc=wang.xibo@h3c.com \
    --cc=wang.yongD@h3c.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.