import: sparse_write() returns negative errno
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 29 Sep 2018 17:58:50 +0000 (02:58 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 1 Oct 2018 06:29:16 +0000 (08:29 +0200)
src/import/import-raw.c
src/import/pull-job.c

index f31432c..4537c42 100644 (file)
@@ -307,7 +307,7 @@ static int raw_import_write(const void *p, size_t sz, void *userdata) {
 
         n = sparse_write(i->output_fd, p, sz, 64);
         if (n < 0)
-                return -errno;
+                return (int) n;
         if ((size_t) n < sz)
                 return -EIO;
 
index 1f78f09..c494bbe 100644 (file)
@@ -233,10 +233,13 @@ static int pull_job_write_uncompressed(const void *p, size_t sz, void *userdata)
 
                 if (j->allow_sparse)
                         n = sparse_write(j->disk_fd, p, sz, 64);
-                else
+                else {
                         n = write(j->disk_fd, p, sz);
+                        if (n < 0)
+                                n = -errno;
+                }
                 if (n < 0)
-                        return log_error_errno(errno, "Failed to write file: %m");
+                        return log_error_errno((int) n, "Failed to write file: %m");
                 if ((size_t) n < sz) {
                         log_error("Short write");
                         return -EIO;