mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
storage: Introduce iscsi_direct pool type
Introducing the pool as a noop. Integration inside the build system. Implementation will be in the following commits. Signed-off-by: Clementine Hayat <clem@lse.epita.fr> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
8aa85e0bb7
commit
f0bf1be3e7
@ -566,6 +566,7 @@ LIBVIRT_STORAGE_ARG_DIR
|
|||||||
LIBVIRT_STORAGE_ARG_FS
|
LIBVIRT_STORAGE_ARG_FS
|
||||||
LIBVIRT_STORAGE_ARG_LVM
|
LIBVIRT_STORAGE_ARG_LVM
|
||||||
LIBVIRT_STORAGE_ARG_ISCSI
|
LIBVIRT_STORAGE_ARG_ISCSI
|
||||||
|
LIBVIRT_STORAGE_ARG_ISCSI_DIRECT
|
||||||
LIBVIRT_STORAGE_ARG_SCSI
|
LIBVIRT_STORAGE_ARG_SCSI
|
||||||
LIBVIRT_STORAGE_ARG_MPATH
|
LIBVIRT_STORAGE_ARG_MPATH
|
||||||
LIBVIRT_STORAGE_ARG_DISK
|
LIBVIRT_STORAGE_ARG_DISK
|
||||||
@ -580,6 +581,7 @@ if test "$with_libvirtd" = "no"; then
|
|||||||
with_storage_fs=no
|
with_storage_fs=no
|
||||||
with_storage_lvm=no
|
with_storage_lvm=no
|
||||||
with_storage_iscsi=no
|
with_storage_iscsi=no
|
||||||
|
with_storage_iscsi_direct=no
|
||||||
with_storage_scsi=no
|
with_storage_scsi=no
|
||||||
with_storage_mpath=no
|
with_storage_mpath=no
|
||||||
with_storage_disk=no
|
with_storage_disk=no
|
||||||
@ -600,6 +602,7 @@ LIBVIRT_STORAGE_CHECK_DIR
|
|||||||
LIBVIRT_STORAGE_CHECK_FS
|
LIBVIRT_STORAGE_CHECK_FS
|
||||||
LIBVIRT_STORAGE_CHECK_LVM
|
LIBVIRT_STORAGE_CHECK_LVM
|
||||||
LIBVIRT_STORAGE_CHECK_ISCSI
|
LIBVIRT_STORAGE_CHECK_ISCSI
|
||||||
|
LIBVIRT_STORAGE_CHECK_ISCSI_DIRECT
|
||||||
LIBVIRT_STORAGE_CHECK_SCSI
|
LIBVIRT_STORAGE_CHECK_SCSI
|
||||||
LIBVIRT_STORAGE_CHECK_MPATH
|
LIBVIRT_STORAGE_CHECK_MPATH
|
||||||
LIBVIRT_STORAGE_CHECK_DISK
|
LIBVIRT_STORAGE_CHECK_DISK
|
||||||
@ -610,7 +613,7 @@ LIBVIRT_STORAGE_CHECK_ZFS
|
|||||||
LIBVIRT_STORAGE_CHECK_VSTORAGE
|
LIBVIRT_STORAGE_CHECK_VSTORAGE
|
||||||
|
|
||||||
with_storage=no
|
with_storage=no
|
||||||
for backend in dir fs lvm iscsi scsi mpath rbd disk; do
|
for backend in dir fs lvm iscsi iscsi_direct scsi mpath rbd disk; do
|
||||||
if eval test \$with_storage_$backend = yes; then
|
if eval test \$with_storage_$backend = yes; then
|
||||||
with_storage=yes
|
with_storage=yes
|
||||||
break
|
break
|
||||||
@ -938,6 +941,7 @@ LIBVIRT_STORAGE_RESULT_DIR
|
|||||||
LIBVIRT_STORAGE_RESULT_FS
|
LIBVIRT_STORAGE_RESULT_FS
|
||||||
LIBVIRT_STORAGE_RESULT_LVM
|
LIBVIRT_STORAGE_RESULT_LVM
|
||||||
LIBVIRT_STORAGE_RESULT_ISCSI
|
LIBVIRT_STORAGE_RESULT_ISCSI
|
||||||
|
LIBVIRT_STORAGE_RESULT_ISCSI_DIRECT
|
||||||
LIBVIRT_STORAGE_RESULT_SCSI
|
LIBVIRT_STORAGE_RESULT_SCSI
|
||||||
LIBVIRT_STORAGE_RESULT_MPATH
|
LIBVIRT_STORAGE_RESULT_MPATH
|
||||||
LIBVIRT_STORAGE_RESULT_DISK
|
LIBVIRT_STORAGE_RESULT_DISK
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<ref name='poollogical'/>
|
<ref name='poollogical'/>
|
||||||
<ref name='pooldisk'/>
|
<ref name='pooldisk'/>
|
||||||
<ref name='pooliscsi'/>
|
<ref name='pooliscsi'/>
|
||||||
|
<ref name='pooliscsidirect'/>
|
||||||
<ref name='poolscsi'/>
|
<ref name='poolscsi'/>
|
||||||
<ref name='poolmpath'/>
|
<ref name='poolmpath'/>
|
||||||
<ref name='poolrbd'/>
|
<ref name='poolrbd'/>
|
||||||
@ -101,6 +102,19 @@
|
|||||||
</interleave>
|
</interleave>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
|
<define name='pooliscsidirect'>
|
||||||
|
<attribute name='type'>
|
||||||
|
<value>iscsi-direct</value>
|
||||||
|
</attribute>
|
||||||
|
<interleave>
|
||||||
|
<ref name='commonmetadata'/>
|
||||||
|
<optional>
|
||||||
|
<ref name='sizing'/>
|
||||||
|
</optional>
|
||||||
|
<ref name='sourceiscsidirect'/>
|
||||||
|
</interleave>
|
||||||
|
</define>
|
||||||
|
|
||||||
<define name='poolscsi'>
|
<define name='poolscsi'>
|
||||||
<attribute name='type'>
|
<attribute name='type'>
|
||||||
<value>scsi</value>
|
<value>scsi</value>
|
||||||
@ -314,6 +328,14 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
|
<define name='sourceinfodeviscsidirect'>
|
||||||
|
<element name='device'>
|
||||||
|
<attribute name='path'>
|
||||||
|
<ref name='IscsiQualifiedName'/>
|
||||||
|
</attribute>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
|
||||||
<define name='initiatorinfo'>
|
<define name='initiatorinfo'>
|
||||||
<element name='initiator'>
|
<element name='initiator'>
|
||||||
<element name='iqn'>
|
<element name='iqn'>
|
||||||
@ -595,6 +617,19 @@
|
|||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
|
<define name='sourceiscsidirect'>
|
||||||
|
<element name='source'>
|
||||||
|
<interleave>
|
||||||
|
<ref name='sourceinfohost'/>
|
||||||
|
<ref name='sourceinfodeviscsidirect'/>
|
||||||
|
<ref name='initiatorinfo'/>
|
||||||
|
<optional>
|
||||||
|
<ref name='sourceinfoauth'/>
|
||||||
|
</optional>
|
||||||
|
</interleave>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
|
||||||
<define name='sourcescsi'>
|
<define name='sourcescsi'>
|
||||||
<element name='source'>
|
<element name='source'>
|
||||||
<interleave>
|
<interleave>
|
||||||
|
@ -433,6 +433,36 @@
|
|||||||
The iSCSI volume pool does not use the volume format type element.
|
The iSCSI volume pool does not use the volume format type element.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="StorageBackendISCSIDirect">iSCSI direct pool</a></h2>
|
||||||
|
<p>
|
||||||
|
This is a variant of the iSCSI pool. Instead of unsing iscsiadm, it uses
|
||||||
|
libiscsi.
|
||||||
|
It require a host, a path which is the target iqn and an initiator iqn.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Example pool input</h3>
|
||||||
|
<pre>
|
||||||
|
<pool type="iscsi-direct">
|
||||||
|
<name>virtimages</name>
|
||||||
|
<source>
|
||||||
|
<host name="iscsi.example.com"/>
|
||||||
|
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
||||||
|
</source>
|
||||||
|
<initiator>
|
||||||
|
<iqn name="iqn.2013-06.com.example:iscsi-initiator"/>
|
||||||
|
</initiator>
|
||||||
|
</pool></pre>
|
||||||
|
|
||||||
|
<h3>Valid pool format types</h3>
|
||||||
|
<p>
|
||||||
|
The iSCSI volume pool does not use the pool format type element.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Valid volume format types</h3>
|
||||||
|
<p>
|
||||||
|
The iSCSI volume pool does not use the volume format type element.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2><a id="StorageBackendSCSI">SCSI pool</a></h2>
|
<h2><a id="StorageBackendSCSI">SCSI pool</a></h2>
|
||||||
<p>
|
<p>
|
||||||
This provides a pool based on a SCSI HBA. Volumes are preexisting SCSI
|
This provides a pool based on a SCSI HBA. Volumes are preexisting SCSI
|
||||||
|
41
m4/virt-storage-iscsi-direct.m4
Normal file
41
m4/virt-storage-iscsi-direct.m4
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
dnl Iscsi-direct storage
|
||||||
|
dnl
|
||||||
|
dnl Copyright (C) 2018 Clementine Hayat.
|
||||||
|
dnl
|
||||||
|
dnl This library is free software; you can redistribute it and/or
|
||||||
|
dnl modify it under the terms of the GNU Lesser General Public
|
||||||
|
dnl License as published by the Free Software Foundation; either
|
||||||
|
dnl version 2.1 of the License, or (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This library is distributed in the hope that it will be useful,
|
||||||
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
dnl Lesser General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU Lesser General Public
|
||||||
|
dnl License along with this library. If not, see
|
||||||
|
dnl <http://www.gnu.org/licenses/>.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_ARG_ISCSI_DIRECT], [
|
||||||
|
LIBVIRT_ARG_WITH_FEATURE([STORAGE_ISCSI_DIRECT],
|
||||||
|
[iscsi-direct backend for the storage driver],
|
||||||
|
[check])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_CHECK_ISCSI_DIRECT], [
|
||||||
|
AC_REQUIRE([LIBVIRT_CHECK_LIBISCSI])
|
||||||
|
if test "$with_storage_iscsi_direct" = "check"; then
|
||||||
|
with_storage_iscsi_direct=$with_libiscsi
|
||||||
|
fi
|
||||||
|
if test "$with_storage_iscsi_direct" = "yes"; then
|
||||||
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI_DIRECT], [1],
|
||||||
|
[whether iSCSI backend for storage driver is enabled])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([WITH_STORAGE_ISCSI_DIRECT],
|
||||||
|
[test "$with_storage_iscsi_direct" = "yes"])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_RESULT_ISCSI_DIRECT], [
|
||||||
|
LIBVIRT_RESULT([iscsi-direct], [$with_storage_iscsi_direct])
|
||||||
|
])
|
@ -30252,6 +30252,7 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPtr def)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VIR_STORAGE_POOL_ISCSI_DIRECT:
|
||||||
case VIR_STORAGE_POOL_ISCSI:
|
case VIR_STORAGE_POOL_ISCSI:
|
||||||
if (def->startupPolicy) {
|
if (def->startupPolicy) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
|
@ -62,9 +62,9 @@ VIR_ENUM_IMPL(virStoragePool,
|
|||||||
VIR_STORAGE_POOL_LAST,
|
VIR_STORAGE_POOL_LAST,
|
||||||
"dir", "fs", "netfs",
|
"dir", "fs", "netfs",
|
||||||
"logical", "disk", "iscsi",
|
"logical", "disk", "iscsi",
|
||||||
"scsi", "mpath", "rbd",
|
"iscsi-direct", "scsi", "mpath",
|
||||||
"sheepdog", "gluster", "zfs",
|
"rbd", "sheepdog", "gluster",
|
||||||
"vstorage")
|
"zfs", "vstorage")
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
|
VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
|
||||||
VIR_STORAGE_POOL_FS_LAST,
|
VIR_STORAGE_POOL_FS_LAST,
|
||||||
@ -207,6 +207,17 @@ static virStoragePoolTypeInfo poolTypeInfo[] = {
|
|||||||
.formatToString = virStoragePoolFormatDiskTypeToString,
|
.formatToString = virStoragePoolFormatDiskTypeToString,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{.poolType = VIR_STORAGE_POOL_ISCSI_DIRECT,
|
||||||
|
.poolOptions = {
|
||||||
|
.flags = (VIR_STORAGE_POOL_SOURCE_HOST |
|
||||||
|
VIR_STORAGE_POOL_SOURCE_DEVICE |
|
||||||
|
VIR_STORAGE_POOL_SOURCE_NETWORK |
|
||||||
|
VIR_STORAGE_POOL_SOURCE_INITIATOR_IQN),
|
||||||
|
},
|
||||||
|
.volOptions = {
|
||||||
|
.formatToString = virStoragePoolFormatDiskTypeToString,
|
||||||
|
}
|
||||||
|
},
|
||||||
{.poolType = VIR_STORAGE_POOL_SCSI,
|
{.poolType = VIR_STORAGE_POOL_SCSI,
|
||||||
.poolOptions = {
|
.poolOptions = {
|
||||||
.flags = (VIR_STORAGE_POOL_SOURCE_ADAPTER),
|
.flags = (VIR_STORAGE_POOL_SOURCE_ADAPTER),
|
||||||
@ -803,6 +814,13 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ret->type == VIR_STORAGE_POOL_ISCSI_DIRECT &&
|
||||||
|
!ret->source.initiator.iqn) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("missing initiator IQN"));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(uuid);
|
VIR_FREE(uuid);
|
||||||
VIR_FREE(type);
|
VIR_FREE(type);
|
||||||
@ -1000,11 +1018,12 @@ virStoragePoolDefFormatBuf(virBufferPtr buf,
|
|||||||
if (virStoragePoolSourceFormat(buf, options, &def->source) < 0)
|
if (virStoragePoolSourceFormat(buf, options, &def->source) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* RBD, Sheepdog, and Gluster devices are not local block devs nor
|
/* RBD, Sheepdog, Gluster and Iscsi-direct devices are not local block devs nor
|
||||||
* files, so they don't have a target */
|
* files, so they don't have a target */
|
||||||
if (def->type != VIR_STORAGE_POOL_RBD &&
|
if (def->type != VIR_STORAGE_POOL_RBD &&
|
||||||
def->type != VIR_STORAGE_POOL_SHEEPDOG &&
|
def->type != VIR_STORAGE_POOL_SHEEPDOG &&
|
||||||
def->type != VIR_STORAGE_POOL_GLUSTER) {
|
def->type != VIR_STORAGE_POOL_GLUSTER &&
|
||||||
|
def->type != VIR_STORAGE_POOL_ISCSI_DIRECT) {
|
||||||
virBufferAddLit(buf, "<target>\n");
|
virBufferAddLit(buf, "<target>\n");
|
||||||
virBufferAdjustIndent(buf, 2);
|
virBufferAdjustIndent(buf, 2);
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ typedef enum {
|
|||||||
VIR_STORAGE_POOL_LOGICAL, /* Logical volume groups / volumes */
|
VIR_STORAGE_POOL_LOGICAL, /* Logical volume groups / volumes */
|
||||||
VIR_STORAGE_POOL_DISK, /* Disk partitions */
|
VIR_STORAGE_POOL_DISK, /* Disk partitions */
|
||||||
VIR_STORAGE_POOL_ISCSI, /* iSCSI targets */
|
VIR_STORAGE_POOL_ISCSI, /* iSCSI targets */
|
||||||
|
VIR_STORAGE_POOL_ISCSI_DIRECT, /* iSCSI targets using libiscsi */
|
||||||
VIR_STORAGE_POOL_SCSI, /* SCSI HBA */
|
VIR_STORAGE_POOL_SCSI, /* SCSI HBA */
|
||||||
VIR_STORAGE_POOL_MPATH, /* Multipath devices */
|
VIR_STORAGE_POOL_MPATH, /* Multipath devices */
|
||||||
VIR_STORAGE_POOL_RBD, /* RADOS Block Device */
|
VIR_STORAGE_POOL_RBD, /* RADOS Block Device */
|
||||||
|
@ -1838,11 +1838,13 @@ virStoragePoolObjSourceFindDuplicateCb(const void *payload,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_STORAGE_POOL_ISCSI:
|
case VIR_STORAGE_POOL_ISCSI:
|
||||||
|
case VIR_STORAGE_POOL_ISCSI_DIRECT:
|
||||||
case VIR_STORAGE_POOL_FS:
|
case VIR_STORAGE_POOL_FS:
|
||||||
case VIR_STORAGE_POOL_LOGICAL:
|
case VIR_STORAGE_POOL_LOGICAL:
|
||||||
case VIR_STORAGE_POOL_DISK:
|
case VIR_STORAGE_POOL_DISK:
|
||||||
case VIR_STORAGE_POOL_ZFS:
|
case VIR_STORAGE_POOL_ZFS:
|
||||||
if ((data->def->type == VIR_STORAGE_POOL_ISCSI ||
|
if ((data->def->type == VIR_STORAGE_POOL_ISCSI ||
|
||||||
|
data->def->type == VIR_STORAGE_POOL_ISCSI_DIRECT ||
|
||||||
data->def->type == VIR_STORAGE_POOL_FS ||
|
data->def->type == VIR_STORAGE_POOL_FS ||
|
||||||
data->def->type == VIR_STORAGE_POOL_LOGICAL ||
|
data->def->type == VIR_STORAGE_POOL_LOGICAL ||
|
||||||
data->def->type == VIR_STORAGE_POOL_DISK ||
|
data->def->type == VIR_STORAGE_POOL_DISK ||
|
||||||
|
@ -31,6 +31,11 @@ STORAGE_DRIVER_ISCSI_SOURCES = \
|
|||||||
storage/storage_backend_iscsi.c \
|
storage/storage_backend_iscsi.c \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
STORAGE_DRIVER_ISCSI_DIRECT_SOURCES = \
|
||||||
|
storage/storage_backend_iscsi_direct.h \
|
||||||
|
storage/storage_backend_iscsi_direct.c \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
STORAGE_DRIVER_SCSI_SOURCES = \
|
STORAGE_DRIVER_SCSI_SOURCES = \
|
||||||
storage/storage_backend_scsi.h \
|
storage/storage_backend_scsi.h \
|
||||||
storage/storage_backend_scsi.c \
|
storage/storage_backend_scsi.c \
|
||||||
@ -89,6 +94,7 @@ EXTRA_DIST += \
|
|||||||
$(STORAGE_FILE_FS_SOURCES) \
|
$(STORAGE_FILE_FS_SOURCES) \
|
||||||
$(STORAGE_DRIVER_LVM_SOURCES) \
|
$(STORAGE_DRIVER_LVM_SOURCES) \
|
||||||
$(STORAGE_DRIVER_ISCSI_SOURCES) \
|
$(STORAGE_DRIVER_ISCSI_SOURCES) \
|
||||||
|
$(STORAGE_DRIVER_ISCSI_DIRECT_SOURCES) \
|
||||||
$(STORAGE_DRIVER_SCSI_SOURCES) \
|
$(STORAGE_DRIVER_SCSI_SOURCES) \
|
||||||
$(STORAGE_DRIVER_MPATH_SOURCES) \
|
$(STORAGE_DRIVER_MPATH_SOURCES) \
|
||||||
$(STORAGE_DRIVER_DISK_SOURCES) \
|
$(STORAGE_DRIVER_DISK_SOURCES) \
|
||||||
@ -193,6 +199,22 @@ libvirt_storage_backend_iscsi_la_LIBADD = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
endif WITH_STORAGE_ISCSI
|
endif WITH_STORAGE_ISCSI
|
||||||
|
|
||||||
|
if WITH_STORAGE_ISCSI_DIRECT
|
||||||
|
libvirt_storage_backend_iscsi_direct_la_SOURCES = $(STORAGE_DRIVER_ISCSI_DIRECT_SOURCES)
|
||||||
|
libvirt_storage_backend_iscsi_direct_la_CFLAGS = \
|
||||||
|
-I$(srcdir)/conf \
|
||||||
|
$(LIBISCSI_CFLAGS) \
|
||||||
|
$(AM_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
storagebackend_LTLIBRARIES += libvirt_storage_backend_iscsi-direct.la
|
||||||
|
libvirt_storage_backend_iscsi_direct_la_LDFLAGS = $(AM_LDFLAGS_MOD)
|
||||||
|
libvirt_storage_backend_iscsi_direct_la_LIBADD = \
|
||||||
|
libvirt.la \
|
||||||
|
../gnulib/lib/libgnu.la \
|
||||||
|
$(NULL)
|
||||||
|
endif WITH_STORAGE_ISCSI_DIRECT
|
||||||
|
|
||||||
if WITH_STORAGE_SCSI
|
if WITH_STORAGE_SCSI
|
||||||
libvirt_storage_backend_scsi_la_SOURCES = $(STORAGE_DRIVER_SCSI_SOURCES)
|
libvirt_storage_backend_scsi_la_SOURCES = $(STORAGE_DRIVER_SCSI_SOURCES)
|
||||||
libvirt_storage_backend_scsi_la_CFLAGS = \
|
libvirt_storage_backend_scsi_la_CFLAGS = \
|
||||||
|
@ -43,6 +43,9 @@
|
|||||||
#if WITH_STORAGE_ISCSI
|
#if WITH_STORAGE_ISCSI
|
||||||
# include "storage_backend_iscsi.h"
|
# include "storage_backend_iscsi.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if WITH_STORAGE_ISCSI_DIRECT
|
||||||
|
# include "storage_backend_iscsi_direct.h"
|
||||||
|
#endif
|
||||||
#if WITH_STORAGE_SCSI
|
#if WITH_STORAGE_SCSI
|
||||||
# include "storage_backend_scsi.h"
|
# include "storage_backend_scsi.h"
|
||||||
#endif
|
#endif
|
||||||
@ -122,6 +125,9 @@ virStorageBackendDriversRegister(bool allbackends ATTRIBUTE_UNUSED)
|
|||||||
#if WITH_STORAGE_ISCSI
|
#if WITH_STORAGE_ISCSI
|
||||||
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendISCSIRegister, "iscsi");
|
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendISCSIRegister, "iscsi");
|
||||||
#endif
|
#endif
|
||||||
|
#if WITH_STORAGE_ISCSI_DIRECT
|
||||||
|
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendISCSIDirectRegister, "iscsi-direct");
|
||||||
|
#endif
|
||||||
#if WITH_STORAGE_SCSI
|
#if WITH_STORAGE_SCSI
|
||||||
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendSCSIRegister, "scsi");
|
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendSCSIRegister, "scsi");
|
||||||
#endif
|
#endif
|
||||||
|
58
src/storage/storage_backend_iscsi_direct.c
Normal file
58
src/storage/storage_backend_iscsi_direct.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* storage_backend_iscsi_direct.c: storage backend for iSCSI using libiscsi
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Clementine Hayat.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Clementine Hayat <clem@lse.epita.fr>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "storage_backend_iscsi_direct.h"
|
||||||
|
#include "storage_util.h"
|
||||||
|
#include "virlog.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_STORAGE
|
||||||
|
|
||||||
|
VIR_LOG_INIT("storage.storage_backend_iscsi_direct");
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virStorageBackendISCSIDirectCheckPool(virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
|
||||||
|
bool *isActive ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
virStorageBackendISCSIDirectRefreshPool(virStoragePoolObjPtr pool ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
virStorageBackend virStorageBackendISCSIDirect = {
|
||||||
|
.type = VIR_STORAGE_POOL_ISCSI_DIRECT,
|
||||||
|
|
||||||
|
.checkPool = virStorageBackendISCSIDirectCheckPool,
|
||||||
|
.refreshPool = virStorageBackendISCSIDirectRefreshPool,
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
virStorageBackendISCSIDirectRegister(void)
|
||||||
|
{
|
||||||
|
return virStorageBackendRegister(&virStorageBackendISCSIDirect);
|
||||||
|
}
|
6
src/storage/storage_backend_iscsi_direct.h
Normal file
6
src/storage/storage_backend_iscsi_direct.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef __VIR_STORAGE_BACKEND_ISCSI_H__
|
||||||
|
# define __VIR_STORAGE_BACKEND_ISCSI_H__
|
||||||
|
|
||||||
|
int virStorageBackendISCSIDirectRegister(void);
|
||||||
|
|
||||||
|
#endif /* __VIR_STORAGE_BACKEND_ISCSI_H__ */
|
@ -1566,6 +1566,7 @@ storageVolLookupByPathCallback(virStoragePoolObjPtr obj,
|
|||||||
case VIR_STORAGE_POOL_LOGICAL:
|
case VIR_STORAGE_POOL_LOGICAL:
|
||||||
case VIR_STORAGE_POOL_DISK:
|
case VIR_STORAGE_POOL_DISK:
|
||||||
case VIR_STORAGE_POOL_ISCSI:
|
case VIR_STORAGE_POOL_ISCSI:
|
||||||
|
case VIR_STORAGE_POOL_ISCSI_DIRECT:
|
||||||
case VIR_STORAGE_POOL_SCSI:
|
case VIR_STORAGE_POOL_SCSI:
|
||||||
case VIR_STORAGE_POOL_MPATH:
|
case VIR_STORAGE_POOL_MPATH:
|
||||||
case VIR_STORAGE_POOL_VSTORAGE:
|
case VIR_STORAGE_POOL_VSTORAGE:
|
||||||
|
14
tests/storagepoolxml2xmlin/pool-iscsi-direct-auth.xml
Normal file
14
tests/storagepoolxml2xmlin/pool-iscsi-direct-auth.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<pool type="iscsi-direct">
|
||||||
|
<name>iscsi-direct-auth</name>
|
||||||
|
<uuid>034d66fc-f507-437a-b552-c479ffd63820</uuid>
|
||||||
|
<source>
|
||||||
|
<host name="iscsi.example.com"/>
|
||||||
|
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
||||||
|
<initiator>
|
||||||
|
<iqn name='iqn.2013-06.com.example:iscsi-initiator'/>
|
||||||
|
</initiator>
|
||||||
|
<auth type='chap' username='user'>
|
||||||
|
<secret uuid='10ed4ad4-c7b0-4696-b574-b40e04fea84b'/>
|
||||||
|
</auth>
|
||||||
|
</source>
|
||||||
|
</pool>
|
11
tests/storagepoolxml2xmlin/pool-iscsi-direct.xml
Normal file
11
tests/storagepoolxml2xmlin/pool-iscsi-direct.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<pool type="iscsi-direct">
|
||||||
|
<name>iscsi-direct</name>
|
||||||
|
<uuid>034d66fc-f507-437a-b552-c479ffd63819</uuid>
|
||||||
|
<source>
|
||||||
|
<host name="iscsi.example.com"/>
|
||||||
|
<device path="iqn.2013-06.com.example:iscsi-pool"/>
|
||||||
|
<initiator>
|
||||||
|
<iqn name='iqn.2013-06.com.example:iscsi-initiator'/>
|
||||||
|
</initiator>
|
||||||
|
</source>
|
||||||
|
</pool>
|
17
tests/storagepoolxml2xmlout/pool-iscsi-direct-auth.xml
Normal file
17
tests/storagepoolxml2xmlout/pool-iscsi-direct-auth.xml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<pool type='iscsi-direct'>
|
||||||
|
<name>iscsi-direct-auth</name>
|
||||||
|
<uuid>034d66fc-f507-437a-b552-c479ffd63820</uuid>
|
||||||
|
<capacity unit='bytes'>0</capacity>
|
||||||
|
<allocation unit='bytes'>0</allocation>
|
||||||
|
<available unit='bytes'>0</available>
|
||||||
|
<source>
|
||||||
|
<host name='iscsi.example.com'/>
|
||||||
|
<device path='iqn.2013-06.com.example:iscsi-pool'/>
|
||||||
|
<initiator>
|
||||||
|
<iqn name='iqn.2013-06.com.example:iscsi-initiator'/>
|
||||||
|
</initiator>
|
||||||
|
<auth type='chap' username='user'>
|
||||||
|
<secret uuid='10ed4ad4-c7b0-4696-b574-b40e04fea84b'/>
|
||||||
|
</auth>
|
||||||
|
</source>
|
||||||
|
</pool>
|
14
tests/storagepoolxml2xmlout/pool-iscsi-direct.xml
Normal file
14
tests/storagepoolxml2xmlout/pool-iscsi-direct.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<pool type='iscsi-direct'>
|
||||||
|
<name>iscsi-direct</name>
|
||||||
|
<uuid>034d66fc-f507-437a-b552-c479ffd63819</uuid>
|
||||||
|
<capacity unit='bytes'>0</capacity>
|
||||||
|
<allocation unit='bytes'>0</allocation>
|
||||||
|
<available unit='bytes'>0</available>
|
||||||
|
<source>
|
||||||
|
<host name='iscsi.example.com'/>
|
||||||
|
<device path='iqn.2013-06.com.example:iscsi-pool'/>
|
||||||
|
<initiator>
|
||||||
|
<iqn name='iqn.2013-06.com.example:iscsi-initiator'/>
|
||||||
|
</initiator>
|
||||||
|
</source>
|
||||||
|
</pool>
|
@ -102,6 +102,8 @@ mymain(void)
|
|||||||
DO_TEST("pool-zfs-sourcedev");
|
DO_TEST("pool-zfs-sourcedev");
|
||||||
DO_TEST("pool-rbd");
|
DO_TEST("pool-rbd");
|
||||||
DO_TEST("pool-vstorage");
|
DO_TEST("pool-vstorage");
|
||||||
|
DO_TEST("pool-iscsi-direct-auth");
|
||||||
|
DO_TEST("pool-iscsi-direct");
|
||||||
|
|
||||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -1203,6 +1203,9 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
|
|||||||
case VIR_STORAGE_POOL_ISCSI:
|
case VIR_STORAGE_POOL_ISCSI:
|
||||||
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI;
|
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI;
|
||||||
break;
|
break;
|
||||||
|
case VIR_STORAGE_POOL_ISCSI_DIRECT:
|
||||||
|
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI;
|
||||||
|
break;
|
||||||
case VIR_STORAGE_POOL_SCSI:
|
case VIR_STORAGE_POOL_SCSI:
|
||||||
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_SCSI;
|
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_SCSI;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user