dkr_import_on_finished on_finished;
void *userdata;
+
+ bool finished;
};
#define PROTOCOL_PREFIX "https://"
static void dkr_import_finish(DkrImport *import, int error) {
assert(import);
+ if (import->finished)
+ return;
+
+ import->finished = true;
+
if (import->on_finished)
import->on_finished(import, error, import->userdata);
else
goto fail;
}
- r = btrfs_subvol_read_only(job->temp_path, true);
+ r = btrfs_subvol_set_read_only(job->temp_path, true);
if (r < 0) {
log_error_errno(r, "Failed to mark snapshot read-only: %m");
goto fail;
l = fwrite(contents, size, nmemb, j->tar_stream);
if (l != nmemb) {
- r = -errno;
+ r = log_error_errno(errno, "Failed to write to tar: %m");
goto fail;
}
}
if (j->payload_size + sz > PAYLOAD_MAX) {
+ log_error("Payload too large.");
r = -EFBIG;
goto fail;
}
p = realloc(j->payload, j->payload_size + sz);
if (!p) {
- r = -ENOMEM;
+ r = log_oom();
goto fail;
}
n->force_local = force_local;
}
- r = hashmap_put(import->names, name, n);
+ r = hashmap_put(import->names, n->name, n);
if (r < 0)
return r;