if (name->force_local) {
(void) btrfs_subvol_remove(p);
- (void) rm_rf(p, false, true, false);
+ (void) rm_rf_dangerous(p, false, true, false);
}
r = btrfs_subvol_snapshot(q, p, false, false);
if (r < 0) {
- log_error_errno(r, "Failed to snapshot final image: %m");
+ log_error_errno(r, "Failed to snapshot local image: %m");
dkr_import_finish(name->import, r);
return;
}
- log_info("Created new image %s.", p);
+ log_info("Created new local image %s.", p);
}
dkr_import_finish(name->import, 0);
if (curl_easy_getinfo(curl, CURLINFO_PRIVATE, &job) != CURLE_OK)
return;
- if (!job)
+ if (!job || job->done)
return;
job->done = true;
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;
assert(contents);
assert(j);
+ if (j->done) {
+ r = -ESTALE;
+ goto fail;
+ }
+
if (j->tar_stream) {
size_t l;
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;
}
assert(contents);
assert(j);
+ if (j->done) {
+ r = -ESTALE;
+ goto fail;
+ }
+
r = curl_header_strdup(contents, sz, HEADER_TOKEN, &token);
if (r < 0) {
log_oom();
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;