From: Shaohua Li <shli@kernel.org>
To: liuzhengyuan <liuzhengyuan@kylinos.cn>
Cc: shli <shli@fb.com>, Song Liu <songliubraving@fb.com>,
linux-raid <linux-raid@vger.kernel.org>
Subject: Re: Superblock of raid5 log can't be updated when array stoped
Date: Mon, 17 Oct 2016 17:28:14 -0700 [thread overview]
Message-ID: <20161018002814.GC106864@kernel.org> (raw)
In-Reply-To: <tencent_382FBBB34581DF7E1F5EC9A2@qq.com>
On Sat, Oct 15, 2016 at 10:19:36AM +0800, liuzhengyuan wrote:
> Hi, Shaohua.
>
> when we stop raid5 array with "mdadm -S" or reboot the system, md module will
> call raid5_quiesce and r5l_quiesce to do some clean work. Some code of r5l_quiesce
> was pasted bellow.
>
> /* make sure r5l_write_super_and_discard_space exits */
> mddev = log->rdev->mddev;
> wake_up(&mddev->sb_wait);
> r5l_wake_reclaim(log, -1L);
> md_unregister_thread(&log->reclaim_thread);
> r5l_do_reclaim(log);
> + md_update_sb(mddev, 1);
>
> It will reclaim all used space of log and call r5l_write_super to reset rdev->journal_tail
> to log->next_checkpoint . However, new rdev->journal_tail would not be written to
> journal device for persistent because journal device may not support discard operation
> or due to mddev_trylock fail (this trylock should always get failed since raid5_quiesce
> was called with reconfig_mutex hold, isn't it?). As a result, it will take a long time to
> recovery the log when the arrary was restarted. Should r5l_quiesce call md_update_sb
> directly to guarantee superblock update?
Yep, that's problem here. Unfortunately we can't call md_update_sb here,
because we might not hold the mddev lock. I think we should call it at do_md_stop.
Thanks,
Shaohua
next prev parent reply other threads:[~2016-10-18 0:28 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-15 2:19 Superblock of raid5 log can't be updated when array stoped liuzhengyuan
2016-10-18 0:28 ` Shaohua Li [this message]
2016-10-18 5:51 ` Zhengyuan Liu
2016-10-21 22:43 ` Shaohua Li
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=20161018002814.GC106864@kernel.org \
--to=shli@kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=liuzhengyuan@kylinos.cn \
--cc=shli@fb.com \
--cc=songliubraving@fb.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.