[libvirt] [PATCH] storage: Do not override the exact error of createRawFile

Osier Yang jyang at redhat.com
Mon Jul 4 07:13:39 UTC 2011


virStorageBackendCreateRaw: createRawFile already reported the
exact error.

Before the fix:

error: Failed to create vol vol-create.img
error: cannot create path '/var/lib/libvirt/images/vol-create.img': Unknown error 18446744073709551597

After the fix:

error: Failed to create vol vol-create.img
error: cannot fill file '/var/lib/libvirt/images/vol-create.img': No space left on device
---
 src/storage/storage_backend.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index a6e66e1..cee2010 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -299,6 +299,7 @@ createRawFile(int fd, virStorageVolDefPtr vol,
 {
     int ret = 0;
     unsigned long long remain;
+    off_t cur_pos = 0;
 
     /* Seek to the final size, so the capacity is available upfront
      * for progress reporting */
@@ -310,7 +311,12 @@ createRawFile(int fd, virStorageVolDefPtr vol,
         goto cleanup;
     }
 
+    cur_pos = lseek(fd, 0, SEEK_CUR);
+
+    VIR_WARN("cur_pos = %jd", cur_pos);
+
     remain = vol->allocation;
+    VIR_WARN("remain = %llu", remain);
 
     if (inputvol) {
         ret = virStorageBackendCopyToFD(vol, inputvol, fd, &remain, 1);
@@ -399,12 +405,9 @@ virStorageBackendCreateRaw(virConnectPtr conn ATTRIBUTE_UNUSED,
         goto cleanup;
     }
 
-    if ((ret = createRawFile(fd, vol, inputvol)) < 0) {
-        virReportSystemError(-fd,
-                             _("cannot create path '%s'"),
-                             vol->target.path);
+    if ((ret = createRawFile(fd, vol, inputvol)) < 0)
+        /* createRawFile already reported the exact error. */
         ret = -1;
-    }
 
 cleanup:
     VIR_FORCE_CLOSE(fd);
-- 
1.7.4




More information about the libvir-list mailing list