From: Anand Jain <Anand.Jain@oracle.com>
To: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Cc: linux-btrfs@vger.kernel.org, David Sterba <dsterba@suse.cz>
Subject: Re: [PATCH] btrfs-progs: fix dev stats error output related to replace handle
Date: Wed, 29 Oct 2014 18:56:10 +0800 [thread overview]
Message-ID: <5450C7CA.5010005@oracle.com> (raw)
In-Reply-To: <1414029371-6765-1-git-send-email-guihc.fnst@cn.fujitsu.com>
Hi Gui,
We don't need this patch. Actually you should back out this patch to
get this correct.
[PATCH] btrfs-progs: do a separate probe for _transient_ replacing device
OR apply. this
[PATCH] revert btrfs-progs: do a separate probe for _transient_
replacing device
Try it out. Lets know.
Thanks
On 10/23/14 09:56, Gui Hecheng wrote:
> Steps to reproduce:
> # mkfs.btrfs -f /dev/sdb7
> # mount /dev/sdb7 /mnt
> # btrfs dev stats /dev/sdb7
> output:
> [/dev/sdb7].write_io_errs 0
> [/dev/sdb7].read_io_errs 0
> [/dev/sdb7].flush_io_errs 0
> [/dev/sdb7].corruption_errs 0
> [/dev/sdb7].generation_errs 0
> * ERROR: ioctl(BTRFS_IOC_GET_DEV_STATS) on failed: No such device
>
> while the following cmd:
> # btrfs dev stats /mnt
> yields the right thing:
> [/dev/sdb7].write_io_errs 0
> [/dev/sdb7].read_io_errs 0
> [/dev/sdb7].flush_io_errs 0
> [/dev/sdb7].corruption_errs 0
> [/dev/sdb7].generation_errs 0
>
> This is caused by commit:
> commit d0588bfa479409b2a0f6243f894338a01a56221a
> btrfs-progs: do a separate probe for transient replacing device
>
> The above commit trys to handle the fi show problem with device under
> replacing, but it changes the @get_fs_info() logic which annoys dev stats.
> For @get_fs_info():
> o If the passed in @path is a mount point, then the @get_device_info() to
> probe the replacing device will be glad to accept the device index
> var @i as its init value 0 and the following i++ correctly sets @i
> to 1 as the start of all devices in btrfs.
> o If @path is a block device, then the problem comes...
> The device index @i is set to devid of the block device passed in,
> and the @get_device_info() will be forced to accept the devid unwillingly.
> Then the following i++ do the evil of skip the block device desired and an
> empty piece is handled next which causes the ERROR above.
>
> To fix this problem, let's just pass 0 to the @get_device_info() explicitly,
> and set the index @i to 1 if a mount point is passed in.
>
> Under my own test, this will not affect the original fix of the fi show
> problem with device under replacing.
>
> Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
> ---
> utils.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/utils.c b/utils.c
> index f10c178..0ba2b26 100644
> --- a/utils.c
> +++ b/utils.c
> @@ -1881,12 +1881,15 @@ int get_fs_info(char *path, struct btrfs_ioctl_fs_info_args *fi_args,
> }
>
> /* get the replace target device if it is there */
> - ret = get_device_info(fd, i, &di_args[ndevs]);
> + ret = get_device_info(fd, 0, &di_args[ndevs]);
> if (!ret) {
> ndevs++;
> fi_args->num_devices++;
> }
> - i++;
> +
> + /* if a mount point is passed in, start from devid 1 */
> + if (fi_args->num_devices != 1)
> + i = 1;
>
> for (; i <= fi_args->max_id; ++i) {
> BUG_ON(ndevs >= fi_args->num_devices);
>
next prev parent reply other threads:[~2014-10-29 10:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-23 1:56 [PATCH] btrfs-progs: fix dev stats error output related to replace handle Gui Hecheng
2014-10-29 10:56 ` Anand Jain [this message]
2014-10-29 11:39 ` Gui Hecheng
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=5450C7CA.5010005@oracle.com \
--to=anand.jain@oracle.com \
--cc=dsterba@suse.cz \
--cc=guihc.fnst@cn.fujitsu.com \
--cc=linux-btrfs@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.