mirror of
https://github.com/kdave/btrfs-progs
synced 2025-01-29 17:02:43 +00:00
btrfs-progs: cmd send: switch to common error message wrapper
Message texts were adjusted. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
7330c881c8
commit
e67f03887f
117
cmds-send.c
117
cmds-send.c
@ -198,14 +198,12 @@ static int write_buf(int fd, const void *buf, int size)
|
||||
ret = write(fd, (char*)buf + pos, size - pos);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: failed to dump stream. %s\n",
|
||||
strerror(-ret));
|
||||
error("failed to dump stream: %s", strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
if (!ret) {
|
||||
ret = -EIO;
|
||||
fprintf(stderr, "ERROR: failed to dump stream. %s\n",
|
||||
strerror(-ret));
|
||||
error("failed to dump stream: %s", strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
pos += ret;
|
||||
@ -227,8 +225,8 @@ static void *dump_thread(void *arg_)
|
||||
readed = read(s->send_fd, buf, sizeof(buf));
|
||||
if (readed < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: failed to read stream from "
|
||||
"kernel. %s\n", strerror(-ret));
|
||||
error("failed to read stream from kernel: %s\n",
|
||||
strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
if (!readed) {
|
||||
@ -262,15 +260,14 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
subvol_fd = openat(send->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
||||
if (subvol_fd < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: open %s failed. %s\n", subvol,
|
||||
strerror(-ret));
|
||||
error("cannot open %s: %s", subvol, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = pipe(pipefd);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: pipe failed. %s\n", strerror(-ret));
|
||||
error("pipe failed: %s", strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -283,8 +280,7 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
send);
|
||||
if (ret) {
|
||||
ret = -ret;
|
||||
fprintf(stderr, "ERROR: thread setup failed: %s\n",
|
||||
strerror(-ret));
|
||||
error("thread setup failed: %s", strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -299,8 +295,7 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
ret = ioctl(subvol_fd, BTRFS_IOC_SEND, &io_send);
|
||||
if (ret) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: send ioctl failed with %d: %s\n", ret,
|
||||
strerror(-ret));
|
||||
error("send ioctl failed with %d: %s", ret, strerror(-ret));
|
||||
if (ret == -EINVAL && (!is_first_subvol || !is_last_subvol))
|
||||
fprintf(stderr,
|
||||
"Try upgrading your kernel or don't use -e.\n");
|
||||
@ -318,14 +313,13 @@ static int do_send(struct btrfs_send *send, u64 parent_root_id,
|
||||
ret = pthread_join(t_read, &t_err);
|
||||
if (ret) {
|
||||
ret = -ret;
|
||||
fprintf(stderr, "ERROR: pthread_join failed: %s\n",
|
||||
strerror(-ret));
|
||||
error("pthread_join failed: %s", strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
if (t_err) {
|
||||
ret = (long int)t_err;
|
||||
fprintf(stderr, "ERROR: failed to process send stream, ret=%ld "
|
||||
"(%s)\n", (long int)t_err, strerror(-ret));
|
||||
error("failed to process send stream, ret=%ld (%s)",
|
||||
(long int)t_err, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -361,16 +355,13 @@ static int init_root_path(struct btrfs_send *s, const char *subvol)
|
||||
|
||||
ret = find_mount_root(subvol, &s->root_path);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr,
|
||||
"ERROR: failed to determine mount point for %s: %s\n",
|
||||
error("failed to determine mount point for %s: %s",
|
||||
subvol, strerror(-ret));
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (ret > 0) {
|
||||
fprintf(stderr,
|
||||
"ERROR: %s doesn't belong to btrfs mount point\n",
|
||||
subvol);
|
||||
error("%s doesn't belong to btrfs mount point", subvol);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@ -378,15 +369,14 @@ static int init_root_path(struct btrfs_send *s, const char *subvol)
|
||||
s->mnt_fd = open(s->root_path, O_RDONLY | O_NOATIME);
|
||||
if (s->mnt_fd < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: can't open '%s': %s\n", s->root_path,
|
||||
strerror(-ret));
|
||||
error("cannot open '%s': %s", s->root_path, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = subvol_uuid_search_init(s->mnt_fd, &s->sus);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: failed to initialize subvol search. "
|
||||
"%s\n", strerror(-ret));
|
||||
error("failed to initialize subvol search: %s",
|
||||
strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -404,16 +394,15 @@ static int is_subvol_ro(struct btrfs_send *s, char *subvol)
|
||||
fd = openat(s->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
||||
if (fd < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: failed to open %s. %s\n",
|
||||
subvol, strerror(-ret));
|
||||
error("cannot open %s: %s", subvol, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: failed to get flags for subvolume. "
|
||||
"%s\n", strerror(-ret));
|
||||
error("failed to get flags for subvolume %s: %s",
|
||||
subvol, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -469,8 +458,7 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(optarg, NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: realpath %s failed. "
|
||||
"%s\n", optarg, strerror(-ret));
|
||||
error("realpath %s failed: %s\n", optarg, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -481,8 +469,7 @@ int cmd_send(int argc, char **argv)
|
||||
ret = get_root_id(&send, get_subvol_name(send.root_path, subvol),
|
||||
&root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: could not resolve "
|
||||
"root_id for %s\n", subvol);
|
||||
error("cannot resolve rootid for %s", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -491,15 +478,13 @@ int cmd_send(int argc, char **argv)
|
||||
goto out;
|
||||
if (!ret) {
|
||||
ret = -EINVAL;
|
||||
fprintf(stderr,
|
||||
"ERROR: cloned subvol %s is not read-only.\n",
|
||||
subvol);
|
||||
error("cloned subvolume %s is not read-only", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
error("not enough memory");
|
||||
goto out;
|
||||
}
|
||||
subvol_uuid_search_finit(&send.sus);
|
||||
@ -515,24 +500,21 @@ int cmd_send(int argc, char **argv)
|
||||
break;
|
||||
case 'f':
|
||||
if (arg_copy_path(outname, optarg, sizeof(outname))) {
|
||||
fprintf(stderr,
|
||||
"ERROR: output file path too long (%zu)\n",
|
||||
strlen(optarg));
|
||||
error("output file path too long (%zu)", strlen(optarg));
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
if (snapshot_parent) {
|
||||
fprintf(stderr, "ERROR: you cannot have more than one parent (-p)\n");
|
||||
error("you cannot have more than one parent (-p)");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
snapshot_parent = realpath(optarg, NULL);
|
||||
if (!snapshot_parent) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: realpath %s failed. "
|
||||
"%s\n", optarg, strerror(-ret));
|
||||
error("realpath %s failed: %s", optarg, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -541,8 +523,7 @@ int cmd_send(int argc, char **argv)
|
||||
goto out;
|
||||
if (!ret) {
|
||||
ret = -EINVAL;
|
||||
fprintf(stderr,
|
||||
"ERROR: parent %s is not read-only.\n",
|
||||
error("parent subvolume %s is not read-only",
|
||||
snapshot_parent);
|
||||
goto out;
|
||||
}
|
||||
@ -550,8 +531,7 @@ int cmd_send(int argc, char **argv)
|
||||
full_send = 0;
|
||||
break;
|
||||
case 'i':
|
||||
fprintf(stderr,
|
||||
"ERROR: -i was removed, use -c instead\n");
|
||||
error("option -i was removed, use -c instead");
|
||||
ret = 1;
|
||||
goto out;
|
||||
case GETOPT_VAL_SEND_NO_DATA:
|
||||
@ -559,7 +539,7 @@ int cmd_send(int argc, char **argv)
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
fprintf(stderr, "ERROR: send args invalid.\n");
|
||||
error("send arguments invalid");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -572,16 +552,14 @@ int cmd_send(int argc, char **argv)
|
||||
send.dump_fd = creat(outname, 0600);
|
||||
if (send.dump_fd == -1) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: can't create '%s': %s\n",
|
||||
outname, strerror(-ret));
|
||||
error("cannot create '%s': %s", outname, strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (isatty(send.dump_fd)) {
|
||||
fprintf(stderr,
|
||||
"ERROR: not dumping send stream into a terminal, "
|
||||
"redirect it into a file\n");
|
||||
error(
|
||||
"not dumping send stream into a terminal, redirect it into a file");
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -592,7 +570,7 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(argv[optind], NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: unable to resolve %s\n", argv[optind]);
|
||||
error("unable to resolve %s", argv[optind]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -605,14 +583,13 @@ int cmd_send(int argc, char **argv)
|
||||
get_subvol_name(send.root_path, snapshot_parent),
|
||||
&parent_root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: could not resolve root_id "
|
||||
"for %s\n", snapshot_parent);
|
||||
error("could not resolve rootid for %s", snapshot_parent);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = add_clone_source(&send, parent_root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
error("not enough memory");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -622,28 +599,25 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(argv[i], NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: unable to resolve %s\n", argv[i]);
|
||||
error("unable to resolve %s", argv[i]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = find_mount_root(subvol, &mount_root);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: find_mount_root failed on %s: "
|
||||
"%s\n", subvol,
|
||||
error("find_mount_root failed on %s: %s", subvol,
|
||||
strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
if (ret > 0) {
|
||||
fprintf(stderr,
|
||||
"ERROR: %s doesn't belong to btrfs mount point\n",
|
||||
error("%s does not belong to btrfs mount point",
|
||||
subvol);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (strcmp(send.root_path, mount_root) != 0) {
|
||||
ret = -EINVAL;
|
||||
fprintf(stderr, "ERROR: all subvols must be from the "
|
||||
"same fs.\n");
|
||||
error("all subvolumes must be from the same filesystem");
|
||||
goto out;
|
||||
}
|
||||
free(mount_root);
|
||||
@ -653,8 +627,7 @@ int cmd_send(int argc, char **argv)
|
||||
goto out;
|
||||
if (!ret) {
|
||||
ret = -EINVAL;
|
||||
fprintf(stderr, "ERROR: %s is not read-only.\n",
|
||||
subvol);
|
||||
error("subvolum %s is not read-only", subvol);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -674,15 +647,14 @@ int cmd_send(int argc, char **argv)
|
||||
subvol = realpath(subvol, NULL);
|
||||
if (!subvol) {
|
||||
ret = -errno;
|
||||
fprintf(stderr, "ERROR: realpath %s failed. "
|
||||
"%s\n", argv[i], strerror(-ret));
|
||||
error("realpath %s failed: %s", argv[i], strerror(-ret));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!full_send && !parent_root_id) {
|
||||
ret = find_good_parent(&send, root_id, &parent_root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: parent determination failed for %lld\n",
|
||||
error("parent determination failed for %lld",
|
||||
root_id);
|
||||
goto out;
|
||||
}
|
||||
@ -693,8 +665,7 @@ int cmd_send(int argc, char **argv)
|
||||
goto out;
|
||||
if (!ret) {
|
||||
ret = -EINVAL;
|
||||
fprintf(stderr, "ERROR: %s is not read-only.\n",
|
||||
subvol);
|
||||
error("subvolume %s is not read-only", subvol);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -715,7 +686,7 @@ int cmd_send(int argc, char **argv)
|
||||
/* done with this subvol, so add it to the clone sources */
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
error("not enough memory");
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user