From: Anand Jain <anand.jain@oracle.com>
To: Qu Wenruo <quwenruo@cn.fujitsu.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 2/5] btrfs: Do per-chunk check for mount time check
Date: Fri, 25 Sep 2015 15:05:45 +0800 [thread overview]
Message-ID: <5604F249.3020204@oracle.com> (raw)
In-Reply-To: <1442801443-5132-3-git-send-email-quwenruo@cn.fujitsu.com>
On 09/21/2015 10:10 AM, Qu Wenruo wrote:
> Now use the btrfs_check_degraded() to do mount time degraded check.
>
> With this patch, now we can mount with the following case:
> # mkfs.btrfs -f -m raid1 -d single /dev/sdb /dev/sdc
> # wipefs -a /dev/sdc
> # mount /dev/sdb /mnt/btrfs -o degraded
> As the single data chunk is only in sdb, so it's OK to mount as
> degraded, as missing one device is OK for RAID1.
>
> But still fail with the following case as expected:
> # mkfs.btrfs -f -m raid1 -d single /dev/sdb /dev/sdc
> # wipefs -a /dev/sdb
> # mount /dev/sdc /mnt/btrfs -o degraded
> As the data chunk is only in sdb, so it's not OK to mount it as
> degraded.
>
> Reported-by: Zhao Lei <zhaolei@cn.fujitsu.com>
> Reported-by: Anand Jain <anand.jain@oracle.com>
> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
> ---
> fs/btrfs/disk-io.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index 0b658d0..d64299f 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -2858,6 +2858,16 @@ int open_ctree(struct super_block *sb,
> goto fail_tree_roots;
> }
>
> + ret = btrfs_check_degradable(fs_info, fs_info->sb->s_flags);
> + if (ret < 0) {
> + btrfs_error(fs_info, ret, "degraded writable mount failed");
> + goto fail_tree_roots;
same here too. if at all we are failing the mount. there is no point in
doing the error handling (btrfs_error()) instead just error reporting is
better (btrfs_err()).
Thanks, Anand
> + } else if (ret > 0 && !btrfs_test_opt(chunk_root, DEGRADED)) {
> + btrfs_warn(fs_info,
> + "Some device missing, but still degraded mountable, please mount with -o degraded option");
> + ret = -EACCES;
> + goto fail_tree_roots;
> + }
> /*
> * keep the device that is marked to be the target device for the
> * dev_replace procedure
> @@ -2947,14 +2957,6 @@ retry_root_backup:
> }
> fs_info->num_tolerated_disk_barrier_failures =
> btrfs_calc_num_tolerated_disk_barrier_failures(fs_info);
> - if (fs_info->fs_devices->missing_devices >
> - fs_info->num_tolerated_disk_barrier_failures &&
> - !(sb->s_flags & MS_RDONLY)) {
> - pr_warn("BTRFS: missing devices(%llu) exceeds the limit(%d), writeable mount is not allowed\n",
> - fs_info->fs_devices->missing_devices,
> - fs_info->num_tolerated_disk_barrier_failures);
> - goto fail_sysfs;
> - }
>
> fs_info->cleaner_kthread = kthread_run(cleaner_kthread, tree_root,
> "btrfs-cleaner");
>
next prev parent reply other threads:[~2015-09-25 7:07 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-21 2:10 [PATCH 0/5] Btrfs: Per-chunk degradable check Qu Wenruo
2015-09-21 2:10 ` [PATCH 1/5] btrfs: Introduce a new function to check if all chunks a OK for degraded mount Qu Wenruo
2016-04-18 8:47 ` [PATCH] btrfs: fix btrfs_check_degradable() to free extent map Anand Jain
2015-09-21 2:10 ` [PATCH 2/5] btrfs: Do per-chunk check for mount time check Qu Wenruo
2015-09-25 7:05 ` Anand Jain [this message]
2015-09-21 2:10 ` [PATCH 3/5] btrfs: Do per-chunk degraded check for remount Qu Wenruo
2015-09-25 6:54 ` Anand Jain
2015-09-25 8:08 ` Qu Wenruo
2015-09-25 8:30 ` Anand Jain
2015-09-25 8:34 ` Qu Wenruo
2015-09-25 8:24 ` [PATCH 1/1] " Anand Jain
2015-09-21 2:10 ` [PATCH 4/5] btrfs: Allow barrier_all_devices to do per-chunk device check Qu Wenruo
2015-10-30 8:32 ` Anand Jain
2015-10-30 11:41 ` Qu Wenruo
2015-10-30 23:52 ` Anand Jain
2015-09-21 2:10 ` [PATCH 5/5] btrfs: Cleanup num_tolerated_disk_barrier_failures Qu Wenruo
2015-11-05 0:57 ` [PATCH 0/5] Btrfs: Per-chunk degradable check Qu Wenruo
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=5604F249.3020204@oracle.com \
--to=anand.jain@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=quwenruo@cn.fujitsu.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.