From: Anand Jain <Anand.Jain@oracle.com>
To: Qu Wenruo <quwenruo@cn.fujitsu.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 1/2] btrfs-progs: Add missing devices check for mounted btrfs.
Date: Fri, 07 Feb 2014 17:34:46 +0800 [thread overview]
Message-ID: <52F4A8B6.5070009@oracle.com> (raw)
In-Reply-To: <1391755560-4721-1-git-send-email-quwenruo@cn.fujitsu.com>
IMO btrfs-progs shouldn't add its intelligence to know if disk
is missing. If btrfs-kernel doesn't know when disk is missing
that's a bug to fix in btrfs-kernel. yes that indeed true as
of now in btrfs-kernel. btrfs kernel has no idea when disk
goes missing, just -EIO doesn't tell btrfs that. I am trying
to fix this first.
But the problem is there isn't good way with in btrfs/FS
to know when disk goes missing. did I miss anything ?
Thanks, Anand
On 02/07/2014 02:45 PM, Qu Wenruo wrote:
> In btrfs/003 of xfstest, it will check whether btrfs fi show can find
> missing devices.
>
> But before the patch, btrfs-progs will not check whether device missing
> if given a mounted btrfs mountpoint/block device.
> This patch fixes the bug and will pass btrfs/003.
>
> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
> Cc: Anand Jain <anand.jain@oracle.com>
> ---
> cmds-filesystem.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/cmds-filesystem.c b/cmds-filesystem.c
> index 384d1b9..4c9933d 100644
> --- a/cmds-filesystem.c
> +++ b/cmds-filesystem.c
> @@ -363,6 +363,8 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
> char *label, char *path)
> {
> int i;
> + int fd;
> + int missing;
> char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
> struct btrfs_ioctl_dev_info_args *tmp_dev_info;
> int ret;
> @@ -385,6 +387,14 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
>
> for (i = 0; i < fs_info->num_devices; i++) {
> tmp_dev_info = (struct btrfs_ioctl_dev_info_args *)&dev_info[i];
> +
> + /* Add check for missing devices even mounted */
> + fd = open((char *)tmp_dev_info->path, O_RDONLY);
> + if (fd < 0) {
> + missing = 1;
> + continue;
> + }
> + close(fd);
> printf("\tdevid %4llu size %s used %s path %s\n",
> tmp_dev_info->devid,
> pretty_size(tmp_dev_info->total_bytes),
> @@ -392,6 +402,8 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
> tmp_dev_info->path);
> }
>
> + if (missing)
> + printf("\t*** Some devices missing\n");
> printf("\n");
> return 0;
> }
>
next prev parent reply other threads:[~2014-02-07 9:24 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-07 6:45 [PATCH 1/2] btrfs-progs: Add missing devices check for mounted btrfs Qu Wenruo
2014-02-07 6:46 ` [PATCH 2/2] btrfs-progs: Add -p/--print-missing options for btrfs fi show Qu Wenruo
2014-02-07 9:26 ` Anand Jain
2014-02-10 0:39 ` Qu Wenruo
2014-02-07 9:34 ` Anand Jain [this message]
2014-02-10 0:36 ` [PATCH 1/2] btrfs-progs: Add missing devices check for mounted btrfs Qu Wenruo
2014-04-09 3:04 ` Anand Jain
2014-04-09 3:26 ` Qu Wenruo
2014-04-09 4:33 ` Anand Jain
2014-04-09 6:55 ` Qu Wenruo
2014-04-09 9:12 ` Anand Jain
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=52F4A8B6.5070009@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.