[PATCHv2 12/33] storage: Determine the local storage type right away

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When walking the backing chain we previously set the storage type to
_FILE and let the virStorageFileGetMetadataFromFDInternal update it to
the correct type later on.

This patch moves the actual storage type determination to the place
where we parse the backing store name so that the code can later be
switched to use virStorageFileReadHeader() directly.
---
 src/storage/storage_driver.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index c90107b..cd4c6b5 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -3111,6 +3111,7 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
 {
     int fd;
     int ret = -1;
+    struct stat st;
     virStorageSourcePtr backingStore = NULL;
     int backingFormat;

@@ -3173,6 +3174,16 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
             ret = 0;
             goto cleanup;
         }
+
+        /* update the type for local storage */
+        if (stat(backingStore->path, &st) == 0) {
+            if (S_ISDIR(st.st_mode)) {
+                backingStore->type = VIR_STORAGE_TYPE_DIR;
+                backingStore->format = VIR_STORAGE_FILE_DIR;
+            } else if (S_ISBLK(st.st_mode)) {
+                backingStore->type = VIR_STORAGE_TYPE_BLOCK;
+            }
+        }
     } else {
         /* TODO: To satisfy the test case, copy the network URI as path. This
          * will be removed later. */
-- 
1.9.3

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]