All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhao Lei <zhaolei@cn.fujitsu.com>
To: <linux-btrfs@vger.kernel.org>
Cc: Zhao Lei <zhaolei@cn.fujitsu.com>
Subject: [PATCH 10/11] btrfs-progs: replace: use btrfs_open_dir for btrfs replace command
Date: Mon, 12 Oct 2015 21:23:03 +0800	[thread overview]
Message-ID: <4eb5c0f11f4eac93a66e38f114c72bf07ef49704.1444655800.git.zhaolei@cn.fujitsu.com> (raw)
In-Reply-To: <cover.1444655800.git.zhaolei@cn.fujitsu.com>

We can use btrfs_open_dir() to check whether target dir is
in btrfs's mount point before open, instead of checking it in
kernel space of ioctl, and return fuzzy error message.

Before patch:
  # ./btrfs replace cancel /mnt/tmp1
  ERROR: ioctl(DEV_REPLACE_CANCEL) failed on "/mnt/tmp1": Inappropriate ioctl for device
  # ./btrfs replace status /mnt/tmp1
  ERROR: ioctl(DEV_REPLACE_STATUS) failed on "/mnt/tmp1": Inappropriate ioctl for device

After patch:
  # ./btrfs replace cancel /mnt/tmp1
  ERROR: not a btrfs filesystem: /mnt/tmp1
  # ./btrfs replace status /mnt/tmp1
  ERROR: not a btrfs filesystem: /mnt/tmp1

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
---
 cmds-replace.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/cmds-replace.c b/cmds-replace.c
index 385b764..9596f2a 100644
--- a/cmds-replace.c
+++ b/cmds-replace.c
@@ -348,7 +348,6 @@ static const char *const cmd_replace_status_usage[] = {
 static int cmd_replace_status(int argc, char **argv)
 {
 	int fd;
-	int e;
 	int c;
 	char *path;
 	int once = 0;
@@ -370,13 +369,9 @@ static int cmd_replace_status(int argc, char **argv)
 		usage(cmd_replace_status_usage);
 
 	path = argv[optind];
-	fd = open_file_or_dir(path, &dirstream);
-	e = errno;
-	if (fd < 0) {
-		fprintf(stderr, "ERROR: can't access \"%s\": %s\n",
-			path, strerror(e));
+	fd = btrfs_open_dir(path, &dirstream, 1);
+	if (fd < 0)
 		return 1;
-	}
 
 	ret = print_replace_status(fd, path, once);
 	close_file_or_dir(fd, dirstream);
@@ -541,12 +536,9 @@ static int cmd_replace_cancel(int argc, char **argv)
 		usage(cmd_replace_cancel_usage);
 
 	path = argv[optind];
-	fd = open_file_or_dir(path, &dirstream);
-	if (fd < 0) {
-		fprintf(stderr, "ERROR: can't access \"%s\": %s\n",
-			path, strerror(errno));
+	fd = btrfs_open_dir(path, &dirstream, 1);
+	if (fd < 0)
 		return 1;
-	}
 
 	args.cmd = BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL;
 	args.result = BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_RESULT;
-- 
1.8.5.1


  parent reply	other threads:[~2015-10-12 13:24 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-12 13:22 [PATCH 00/11] btrfs-progs: Use btrfs_open_dir to avoid show error of ioctl or tree search Zhao Lei
2015-10-12 13:22 ` [PATCH 01/11] btrfs-progs: subvolume: use btrfs_open_dir for btrfs subvolume command Zhao Lei
2015-10-12 13:22 ` [PATCH 02/11] btrfs-progs: filesystem: use btrfs_open_dir for btrfs filesystem command Zhao Lei
2015-10-12 13:22 ` [PATCH 03/11] btrfs-progs: balance: use btrfs_open_dir for btrfs balance command Zhao Lei
2015-10-12 13:22 ` [PATCH 04/11] btrfs-progs: inspect: Bypass unnecessary clean function in open_error Zhao Lei
2015-10-12 13:22 ` [PATCH 05/11] btrfs-progs: inspect: set return value of error case Zhao Lei
2015-10-12 13:22 ` [PATCH 06/11] btrfs-progs: inspect: use btrfs_open_dir for btrfs inspect command Zhao Lei
2015-10-12 13:23 ` [PATCH 07/11] btrfs-progs: qgroup: use btrfs_open_dir for btrfs qgroup command Zhao Lei
2015-10-12 13:23 ` [PATCH 08/11] btrfs-progs: quota: use btrfs_open_dir for btrfs quota command Zhao Lei
2015-10-12 13:23 ` [PATCH 09/11] btrfs-progs: use btrfs_open_dir in open_path_or_dev_mnt Zhao Lei
2015-10-12 13:23 ` Zhao Lei [this message]
2015-10-12 13:23 ` [PATCH 11/11] btrfs-progs: fragments: use btrfs_open_dir for btrfs-fragments command Zhao Lei
2015-10-13 15:58 ` [PATCH 00/11] btrfs-progs: Use btrfs_open_dir to avoid show error of ioctl or tree search David Sterba

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=4eb5c0f11f4eac93a66e38f114c72bf07ef49704.1444655800.git.zhaolei@cn.fujitsu.com \
    --to=zhaolei@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.