[PATCH 01/11] storage: Add a struct for scsi_host type adapter

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

 



Later patch will add new XML attributes for scsi_host adapter, this
is the preparation patch.
---
 src/conf/storage_conf.c            | 15 ++++++++-------
 src/conf/storage_conf.h            |  4 +++-
 src/phyp/phyp_driver.c             |  8 ++++----
 src/storage/storage_backend_scsi.c |  2 +-
 4 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index c58b728..a44e021 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -319,7 +319,7 @@ virStoragePoolSourceAdapterClear(virStoragePoolSourceAdapter adapter)
         VIR_FREE(adapter.data.fchost.parent);
     } else if (adapter.type ==
                VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) {
-        VIR_FREE(adapter.data.name);
+        VIR_FREE(adapter.data.scsi_host.name);
     }
 }
 
@@ -631,7 +631,7 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt,
                 virXPathString("string(./adapter/@wwpn)", ctxt);
         } else if (source->adapter.type ==
                    VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) {
-            source->adapter.data.name =
+            source->adapter.data.scsi_host.name =
                 virXPathString("string(./adapter/@name)", ctxt);
         }
     } else {
@@ -656,7 +656,7 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt,
         /* To keep back-compat, 'type' is not required to specify
          * for scsi_host adapter.
          */
-        if ((source->adapter.data.name =
+        if ((source->adapter.data.scsi_host.name =
              virXPathString("string(./adapter/@name)", ctxt)))
             source->adapter.type =
                 VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST;
@@ -927,7 +927,7 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
                 goto error;
         } else if (ret->source.adapter.type ==
                    VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) {
-            if (!ret->source.adapter.data.name) {
+            if (!ret->source.adapter.data.scsi_host.name) {
                 virReportError(VIR_ERR_XML_ERROR, "%s",
                                _("missing storage pool source adapter name"));
                 goto error;
@@ -1084,7 +1084,8 @@ virStoragePoolSourceFormat(virBufferPtr buf,
                               src->adapter.data.fchost.wwpn);
         } else if (src->adapter.type ==
                  VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) {
-            virBufferAsprintf(buf," name='%s'/>\n", src->adapter.data.name);
+            virBufferAsprintf(buf," name='%s'/>\n",
+                              src->adapter.data.scsi_host.name);
         }
     }
 
@@ -2010,8 +2011,8 @@ virStoragePoolSourceFindDuplicate(virStoragePoolObjListPtr pools,
                     matchpool = pool;
             } else if (pool->def->source.adapter.type ==
                        VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST){
-                if (STREQ(pool->def->source.adapter.data.name,
-                          def->source.adapter.data.name))
+                if (STREQ(pool->def->source.adapter.data.scsi_host.name,
+                          def->source.adapter.data.scsi_host.name))
                     matchpool = pool;
             }
             break;
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index 8e739ff..823d5af 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -237,7 +237,9 @@ struct _virStoragePoolSourceAdapter {
     int type; /* enum virStoragePoolSourceAdapterType */
 
     union {
-        char *name;
+        struct {
+            char *name;
+        } scsi_host;
         struct {
             char *parent;
             char *wwnn;
diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index 70d3adb..ca2e700 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -2022,7 +2022,7 @@ phypStorageVolCreateXML(virStoragePoolPtr pool,
     spdef->source.ndevice = 1;
 
     /*XXX source adapter not working properly, should show hdiskX */
-    if ((spdef->source.adapter.data.name =
+    if ((spdef->source.adapter.data.scsi_host.name =
          phypGetStoragePoolDevice(pool->conn, pool->name)) == NULL) {
         VIR_ERROR(_("Unable to determine storage pools's source adapter."));
         goto err;
@@ -2244,7 +2244,7 @@ phypStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
 
     pool.source.ndevice = 1;
 
-    if ((pool.source.adapter.data.name =
+    if ((pool.source.adapter.data.scsi_host.name =
          phypGetStoragePoolDevice(sp->conn, sp->name)) == NULL) {
         VIR_ERROR(_("Unable to determine storage sps's source adapter."));
         goto cleanup;
@@ -2485,7 +2485,7 @@ phypBuildStoragePool(virConnectPtr conn, virStoragePoolDefPtr def)
                           managed_system, vios_id);
 
     virBufferAsprintf(&buf, "mksp -f %schild %s", def->name,
-                      source.adapter.data.name);
+                      source.adapter.data.scsi_host.name);
 
     if (system_type == HMC)
         virBufferAddChar(&buf, '\'');
@@ -2724,7 +2724,7 @@ phypStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
     def.source.ndevice = 1;
 
     /*XXX source adapter not working properly, should show hdiskX */
-    if ((def.source.adapter.data.name =
+    if ((def.source.adapter.data.scsi_host.name =
          phypGetStoragePoolDevice(pool->conn, pool->name)) == NULL) {
         VIR_ERROR(_("Unable to determine storage pools's source adapter."));
         goto err;
diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c
index bd6a2a9..0a79e6c 100644
--- a/src/storage/storage_backend_scsi.c
+++ b/src/storage/storage_backend_scsi.c
@@ -624,7 +624,7 @@ getAdapterName(virStoragePoolSourceAdapter adapter)
     char *name = NULL;
 
     if (adapter.type != VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST) {
-        ignore_value(VIR_STRDUP(name, adapter.data.name));
+        ignore_value(VIR_STRDUP(name, adapter.data.scsi_host.name));
         return name;
     }
 
-- 
1.8.1.4

--
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]