All of lore.kernel.org
 help / color / mirror / Atom feed
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);
>

  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.