diff options
author | Omar Sandoval <osandov@fb.com> | 2018-01-20 13:04:48 -0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-03-06 11:28:37 +0100 |
commit | afb04260169911c9ecab2524fad03b86bc744dd3 (patch) | |
tree | ea50e947ed8211dcd97a39a4f8c1969065ff23ee /cmds-subvolume.c | |
parent | 9e73a416f0acbc6c215532e2441f5be10b9e166a (diff) |
btrfs-progs: use libbtrfsutil for subvol delete
Most of the interesting part of this command is the commit mode, so this
only saves a little bit of code.
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-subvolume.c')
-rw-r--r-- | cmds-subvolume.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/cmds-subvolume.c b/cmds-subvolume.c index 149cd3fc..ad5bc19e 100644 --- a/cmds-subvolume.c +++ b/cmds-subvolume.c @@ -264,7 +264,6 @@ static int cmd_subvol_delete(int argc, char **argv) int res, ret = 0; int cnt; int fd = -1; - struct btrfs_ioctl_vol_args args; char *dname, *vname, *cpath; char *dupdname = NULL; char *dupvname = NULL; @@ -276,6 +275,7 @@ static int cmd_subvol_delete(int argc, char **argv) char uuidbuf[BTRFS_UUID_UNPARSED_SIZE]; struct seen_fsid *seen_fsid_hash[SEEN_FSID_HASH_SIZE] = { NULL, }; enum { COMMIT_AFTER = 1, COMMIT_EACH = 2 }; + enum btrfs_util_error err; while (1) { int c; @@ -319,14 +319,9 @@ static int cmd_subvol_delete(int argc, char **argv) again: path = argv[cnt]; - res = test_issubvolume(path); - if (res < 0) { - error("cannot access subvolume %s: %s", path, strerror(-res)); - ret = 1; - goto out; - } - if (!res) { - error("not a subvolume: %s", path); + err = btrfs_util_is_subvolume(path); + if (err) { + error_btrfs_util(err); ret = 1; goto out; } @@ -352,11 +347,10 @@ again: printf("Delete subvolume (%s): '%s/%s'\n", commit_mode == COMMIT_EACH || (commit_mode == COMMIT_AFTER && cnt + 1 == argc) ? "commit" : "no-commit", dname, vname); - memset(&args, 0, sizeof(args)); - strncpy_null(args.name, vname); - res = ioctl(fd, BTRFS_IOC_SNAP_DESTROY, &args); - if(res < 0 ){ - error("cannot delete '%s/%s': %m", dname, vname); + + err = btrfs_util_delete_subvolume_fd(fd, vname, 0); + if (err) { + error_btrfs_util(err); ret = 1; goto out; } |