mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-16 09:46:55 +00:00
btrfs-progs: subvolume: output the prompt line only when the ioctl succeeded
[BUG] With the latest kernel patch to reject invalid qgroupids in btrfs_qgroup_inherit structure, "btrfs subvolume create" or "btrfs subvolume snapshot" can lead to the following output: # mkfs.btrfs -O quota -f $dev # mount $dev $mnt # btrfs subvolume create -i 2/0 $mnt/subv1 Create subvolume '/mnt/btrfs/subv1' ERROR: cannot create subvolume: No such file or directory The "btrfs subvolume" command output the first line, seemingly to indicate a successful subvolume creation, then followed by an error message. This can be a little confusing on whether if the subvolume is created or not. [FIX] Fix the output by only outputting the regular line if the ioctl succeeded. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
4da5f22b23
commit
5f87b467a9
@ -229,7 +229,6 @@ static int create_one_subvolume(const char *dst, struct btrfs_qgroup_inherit *in
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_verbose(LOG_DEFAULT, "Create subvolume '%s/%s'\n", dstdir, newname);
|
|
||||||
if (inherit) {
|
if (inherit) {
|
||||||
struct btrfs_ioctl_vol_args_v2 args;
|
struct btrfs_ioctl_vol_args_v2 args;
|
||||||
|
|
||||||
@ -253,6 +252,7 @@ static int create_one_subvolume(const char *dst, struct btrfs_qgroup_inherit *in
|
|||||||
error("cannot create subvolume: %m");
|
error("cannot create subvolume: %m");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
pr_verbose(LOG_DEFAULT, "Create subvolume '%s/%s'\n", dstdir, newname);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
close(fddst);
|
close(fddst);
|
||||||
@ -754,16 +754,8 @@ static int cmd_subvolume_snapshot(const struct cmd_struct *cmd, int argc, char *
|
|||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (readonly) {
|
if (readonly)
|
||||||
args.flags |= BTRFS_SUBVOL_RDONLY;
|
args.flags |= BTRFS_SUBVOL_RDONLY;
|
||||||
pr_verbose(LOG_DEFAULT,
|
|
||||||
"Create a readonly snapshot of '%s' in '%s/%s'\n",
|
|
||||||
subvol, dstdir, newname);
|
|
||||||
} else {
|
|
||||||
pr_verbose(LOG_DEFAULT,
|
|
||||||
"Create a snapshot of '%s' in '%s/%s'\n",
|
|
||||||
subvol, dstdir, newname);
|
|
||||||
}
|
|
||||||
|
|
||||||
args.fd = fd;
|
args.fd = fd;
|
||||||
if (inherit) {
|
if (inherit) {
|
||||||
@ -784,6 +776,15 @@ static int cmd_subvolume_snapshot(const struct cmd_struct *cmd, int argc, char *
|
|||||||
|
|
||||||
retval = 0; /* success */
|
retval = 0; /* success */
|
||||||
|
|
||||||
|
if (readonly)
|
||||||
|
pr_verbose(LOG_DEFAULT,
|
||||||
|
"Create readonly snapshot of '%s' in '%s/%s'\n",
|
||||||
|
subvol, dstdir, newname);
|
||||||
|
else
|
||||||
|
pr_verbose(LOG_DEFAULT,
|
||||||
|
"Create snapshot of '%s' in '%s/%s'\n",
|
||||||
|
subvol, dstdir, newname);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
close(fddst);
|
close(fddst);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
Loading…
Reference in New Issue
Block a user