btrfs-progs: send: cleanup, rename send context variables
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
a9f407b9a6
commit
62fb1a5c14
57
cmds-send.c
57
cmds-send.c
|
@ -64,11 +64,11 @@ struct btrfs_send {
|
||||||
struct subvol_uuid_search sus;
|
struct subvol_uuid_search sus;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_root_id(struct btrfs_send *s, const char *path, u64 *root_id)
|
static int get_root_id(struct btrfs_send *sctx, const char *path, u64 *root_id)
|
||||||
{
|
{
|
||||||
struct subvol_info *si;
|
struct subvol_info *si;
|
||||||
|
|
||||||
si = subvol_uuid_search(&s->sus, 0, NULL, 0, path,
|
si = subvol_uuid_search(&sctx->sus, 0, NULL, 0, path,
|
||||||
subvol_search_by_path);
|
subvol_search_by_path);
|
||||||
if (!si)
|
if (!si)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
@ -78,24 +78,24 @@ static int get_root_id(struct btrfs_send *s, const char *path, u64 *root_id)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct subvol_info *get_parent(struct btrfs_send *s, u64 root_id)
|
static struct subvol_info *get_parent(struct btrfs_send *sctx, u64 root_id)
|
||||||
{
|
{
|
||||||
struct subvol_info *si_tmp;
|
struct subvol_info *si_tmp;
|
||||||
struct subvol_info *si;
|
struct subvol_info *si;
|
||||||
|
|
||||||
si_tmp = subvol_uuid_search(&s->sus, root_id, NULL, 0, NULL,
|
si_tmp = subvol_uuid_search(&sctx->sus, root_id, NULL, 0, NULL,
|
||||||
subvol_search_by_root_id);
|
subvol_search_by_root_id);
|
||||||
if (!si_tmp)
|
if (!si_tmp)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
si = subvol_uuid_search(&s->sus, 0, si_tmp->parent_uuid, 0, NULL,
|
si = subvol_uuid_search(&sctx->sus, 0, si_tmp->parent_uuid, 0, NULL,
|
||||||
subvol_search_by_uuid);
|
subvol_search_by_uuid);
|
||||||
free(si_tmp->path);
|
free(si_tmp->path);
|
||||||
free(si_tmp);
|
free(si_tmp);
|
||||||
return si;
|
return si;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int find_good_parent(struct btrfs_send *s, u64 root_id, u64 *found)
|
static int find_good_parent(struct btrfs_send *sctx, u64 root_id, u64 *found)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct subvol_info *parent = NULL;
|
struct subvol_info *parent = NULL;
|
||||||
|
@ -105,22 +105,22 @@ static int find_good_parent(struct btrfs_send *s, u64 root_id, u64 *found)
|
||||||
u64 best_diff = (u64)-1;
|
u64 best_diff = (u64)-1;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
parent = get_parent(s, root_id);
|
parent = get_parent(sctx, root_id);
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < s->clone_sources_count; i++) {
|
for (i = 0; i < sctx->clone_sources_count; i++) {
|
||||||
if (s->clone_sources[i] == parent->root_id) {
|
if (sctx->clone_sources[i] == parent->root_id) {
|
||||||
best_parent = parent;
|
best_parent = parent;
|
||||||
parent = NULL;
|
parent = NULL;
|
||||||
goto out_found;
|
goto out_found;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < s->clone_sources_count; i++) {
|
for (i = 0; i < sctx->clone_sources_count; i++) {
|
||||||
parent2 = get_parent(s, s->clone_sources[i]);
|
parent2 = get_parent(sctx, sctx->clone_sources[i]);
|
||||||
if (!parent2)
|
if (!parent2)
|
||||||
continue;
|
continue;
|
||||||
if (parent2->root_id != parent->root_id) {
|
if (parent2->root_id != parent->root_id) {
|
||||||
|
@ -132,8 +132,9 @@ static int find_good_parent(struct btrfs_send *s, u64 root_id, u64 *found)
|
||||||
|
|
||||||
free(parent2->path);
|
free(parent2->path);
|
||||||
free(parent2);
|
free(parent2);
|
||||||
parent2 = subvol_uuid_search(&s->sus, s->clone_sources[i], NULL,
|
parent2 = subvol_uuid_search(&sctx->sus,
|
||||||
0, NULL, subvol_search_by_root_id);
|
sctx->clone_sources[i], NULL, 0, NULL,
|
||||||
|
subvol_search_by_root_id);
|
||||||
|
|
||||||
if (!parent2) {
|
if (!parent2) {
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
|
@ -178,19 +179,19 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int add_clone_source(struct btrfs_send *s, u64 root_id)
|
static int add_clone_source(struct btrfs_send *sctx, u64 root_id)
|
||||||
{
|
{
|
||||||
void *tmp;
|
void *tmp;
|
||||||
|
|
||||||
tmp = s->clone_sources;
|
tmp = sctx->clone_sources;
|
||||||
s->clone_sources = realloc(s->clone_sources,
|
sctx->clone_sources = realloc(sctx->clone_sources,
|
||||||
sizeof(*s->clone_sources) * (s->clone_sources_count + 1));
|
sizeof(*sctx->clone_sources) * (sctx->clone_sources_count + 1));
|
||||||
|
|
||||||
if (!s->clone_sources) {
|
if (!sctx->clone_sources) {
|
||||||
free(tmp);
|
free(tmp);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
s->clone_sources[s->clone_sources_count++] = root_id;
|
sctx->clone_sources[sctx->clone_sources_count++] = root_id;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -343,14 +344,14 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_root_path(struct btrfs_send *s, const char *subvol)
|
static int init_root_path(struct btrfs_send *sctx, const char *subvol)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (s->root_path)
|
if (sctx->root_path)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
ret = find_mount_root(subvol, &s->root_path);
|
ret = find_mount_root(subvol, &sctx->root_path);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error("failed to determine mount point for %s: %s",
|
error("failed to determine mount point for %s: %s",
|
||||||
subvol, strerror(-ret));
|
subvol, strerror(-ret));
|
||||||
|
@ -363,14 +364,14 @@ static int init_root_path(struct btrfs_send *s, const char *subvol)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->mnt_fd = open(s->root_path, O_RDONLY | O_NOATIME);
|
sctx->mnt_fd = open(sctx->root_path, O_RDONLY | O_NOATIME);
|
||||||
if (s->mnt_fd < 0) {
|
if (sctx->mnt_fd < 0) {
|
||||||
ret = -errno;
|
ret = -errno;
|
||||||
error("cannot open '%s': %s", s->root_path, strerror(-ret));
|
error("cannot open '%s': %s", sctx->root_path, strerror(-ret));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = subvol_uuid_search_init(s->mnt_fd, &s->sus);
|
ret = subvol_uuid_search_init(sctx->mnt_fd, &sctx->sus);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error("failed to initialize subvol search: %s",
|
error("failed to initialize subvol search: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
|
@ -382,13 +383,13 @@ out:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_subvol_ro(struct btrfs_send *s, const char *subvol)
|
static int is_subvol_ro(struct btrfs_send *sctx, const char *subvol)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
u64 flags;
|
u64 flags;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
|
||||||
fd = openat(s->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
fd = openat(sctx->mnt_fd, subvol, O_RDONLY | O_NOATIME);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ret = -errno;
|
ret = -errno;
|
||||||
error("cannot open %s: %s", subvol, strerror(-ret));
|
error("cannot open %s: %s", subvol, strerror(-ret));
|
||||||
|
|
Loading…
Reference in New Issue