From 6c55124f37afdcd29551a38c681ecef85f8d5af8 Mon Sep 17 00:00:00 2001
From: Peter Krempa <pkrempa@redhat.com>
Date: Thu, 11 Aug 2011 11:37:17 +0200
Subject: [PATCH] storage: Directory shouldn't be listed as type 'file'

Fix internals of libvirt for new storage volume type.
Libvirt reported an invalid type of the volume.

BZ #727088
---
 include/libvirt/libvirt.h.in     | 1 +
 src/storage/storage_backend_fs.c | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index b1bda31169..aa29fb6694 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -1705,6 +1705,7 @@ typedef virStorageVol *virStorageVolPtr;
 typedef enum {
   VIR_STORAGE_VOL_FILE = 0,     /* Regular file based volumes */
   VIR_STORAGE_VOL_BLOCK = 1,    /* Block based volumes */
+  VIR_STORAGE_VOL_DIR = 2,      /* Directory-passthrough based volume */
 } virStorageVolType;
 
 typedef enum {
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index 058e00ce2f..ff5afaa78a 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -675,6 +675,10 @@ virStorageBackendFileSystemRefresh(virConnectPtr conn ATTRIBUTE_UNUSED,
                 goto cleanup;
         }
 
+        /* directory based volume */
+        if (vol->target.format == VIR_STORAGE_FILE_DIR)
+            vol->type = VIR_STORAGE_VOL_DIR;
+
         if (backingStore != NULL) {
             vol->backingStore.path = backingStore;
             vol->backingStore.format = backingStoreFormat;