diff mbox

[19/20] Btrfs-progs: fix magic return value in cmds-replace.c

Message ID 1378308157-4621-20-git-send-email-wangshilong1991@gmail.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Wang Shilong Sept. 4, 2013, 3:22 p.m. UTC
From: Wang Shilong <wangsl.fnst@cn.fujitsu.com>

There are 3 kinds of return values in replace cancel:

0: cancel successfully.
1: usage or syntal errors
2: cancel a not started or finished replacing operations.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
---
 cmds-replace.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
diff mbox

Patch

diff --git a/cmds-replace.c b/cmds-replace.c
index 1df719b..d9b0940 100644
--- a/cmds-replace.c
+++ b/cmds-replace.c
@@ -324,7 +324,7 @@  leave_with_error:
 		close(fdsrcdev);
 	if (fddstdev != -1)
 		close(fddstdev);
-	return -1;
+	return 1;
 }
 
 static const char *const cmd_status_replace_usage[] = {
@@ -367,12 +367,12 @@  static int cmd_status_replace(int argc, char **argv)
 	if (fd < 0) {
 		fprintf(stderr, "ERROR: can't access \"%s\": %s\n",
 			path, strerror(e));
-		return -1;
+		return 1;
 	}
 
 	ret = print_replace_status(fd, path, once);
 	close_file_or_dir(fd, dirstream);
-	return ret;
+	return !!ret;
 }
 
 static int print_replace_status(int fd, const char *path, int once)
@@ -530,7 +530,7 @@  static int cmd_cancel_replace(int argc, char **argv)
 	if (fd < 0) {
 		fprintf(stderr, "ERROR: can't access \"%s\": %s\n",
 			path, strerror(errno));
-		return -1;
+		return 1;
 	}
 
 	args.cmd = BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL;
@@ -541,9 +541,13 @@  static int cmd_cancel_replace(int argc, char **argv)
 		fprintf(stderr, "ERROR: ioctl(DEV_REPLACE_CANCEL) failed on \"%s\": %s, %s\n",
 			path, strerror(e),
 			replace_dev_result2string(args.result));
-		return ret;
+		return 1;
+	}
+	if (args.result == BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED) {
+		printf("INFO: ioctl(DEV_REPLACE_CANCEL)\"%s\": %s\n",
+			path, replace_dev_result2string(args.result));
+		return 2;
 	}
-
 	return 0;
 }