From 2116398b1dbe8a4483a64e087c9a4588d8a230d1 Mon Sep 17 00:00:00 2001 From: Omar Sandoval Date: Wed, 20 Dec 2017 09:43:52 -0800 Subject: [PATCH] btrfs-progs: use libbtrfsutil for set-default Signed-off-by: Omar Sandoval Signed-off-by: David Sterba --- cmds-subvolume.c | 43 ++++++++----------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/cmds-subvolume.c b/cmds-subvolume.c index e5dcdea..d30435f 100644 --- a/cmds-subvolume.c +++ b/cmds-subvolume.c @@ -872,11 +872,9 @@ static const char * const cmd_subvol_set_default_usage[] = { static int cmd_subvol_set_default(int argc, char **argv) { - int ret=0, fd; - u64 objectid; - char *path; - char *subvolid; - DIR *dirstream = NULL; + u64 objectid; + char *path; + enum btrfs_util_error err; clean_args_no_options(argc, argv, cmd_subvol_set_default_usage); @@ -886,42 +884,17 @@ static int cmd_subvol_set_default(int argc, char **argv) if (argc - optind == 1) { /* path to the subvolume is specified */ + objectid = 0; path = argv[optind]; - - ret = test_issubvolume(path); - if (ret < 0) { - error("stat error: %s", strerror(-ret)); - return 1; - } else if (!ret) { - error("'%s' is not a subvolume", path); - return 1; - } - - fd = btrfs_open_dir(path, &dirstream, 1); - if (fd < 0) - return 1; - - ret = lookup_path_rootid(fd, &objectid); - if (ret) { - error("unable to get subvol id: %s", strerror(-ret)); - close_file_or_dir(fd, dirstream); - return 1; - } } else { /* subvol id and path to the filesystem are specified */ - subvolid = argv[optind]; + objectid = arg_strtou64(argv[optind]); path = argv[optind + 1]; - objectid = arg_strtou64(subvolid); - - fd = btrfs_open_dir(path, &dirstream, 1); - if (fd < 0) - return 1; } - ret = ioctl(fd, BTRFS_IOC_DEFAULT_SUBVOL, &objectid); - close_file_or_dir(fd, dirstream); - if (ret < 0) { - error("unable to set a new default subvolume: %m"); + err = btrfs_util_set_default_subvolume(path, objectid); + if (err) { + error_btrfs_util(err); return 1; } return 0; -- 2.7.4