From ff6a74609b7c925834da1373d3adb9642ca51422 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 17 Jan 2015 02:36:23 +0100 Subject: import-raw: when downloading raw images, generate sparse files if we can --- src/import/import-raw.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/import/import-raw.c') diff --git a/src/import/import-raw.c b/src/import/import-raw.c index f830ba47ff..c82d263787 100644 --- a/src/import/import-raw.c +++ b/src/import/import-raw.c @@ -332,6 +332,14 @@ static void raw_import_curl_on_finished(CurlGlue *g, CURL *curl, CURLcode result goto fail; } + /* Make sure the file size is right, in case the file was + * sparse and we just seeked for the last part */ + if (ftruncate(f->disk_fd, f->written_uncompressed) < 0) { + log_error_errno(errno, "Failed to truncate file: %m"); + r = -errno; + goto fail; + } + r = raw_import_maybe_convert_qcow2(f); if (r < 0) goto fail; @@ -427,7 +435,7 @@ static int raw_import_file_write_uncompressed(RawImportFile *f, void *p, size_t return -EFBIG; } - n = write(f->disk_fd, p, sz); + n = sparse_write(f->disk_fd, p, sz, 64); if (n < 0) { log_error_errno(errno, "Failed to write file: %m"); return -errno; -- cgit v1.2.3-54-g00ecf