From nobody Tue Feb 10 06:27:56 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1533456596880763.374266570979; Sun, 5 Aug 2018 01:09:56 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 366E8C049D5C; Sun, 5 Aug 2018 08:09:55 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 01DB3D555C; Sun, 5 Aug 2018 08:09:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id AE16624F65; Sun, 5 Aug 2018 08:09:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w6V8jIH1027414 for ; Tue, 31 Jul 2018 04:45:18 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9E49D600C9; Tue, 31 Jul 2018 08:45:18 +0000 (UTC) Received: from mx1.redhat.com (ext-mx09.extmail.prod.ext.phx2.redhat.com [10.5.110.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 481BB600C5; Tue, 31 Jul 2018 08:45:11 +0000 (UTC) Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 642FC4DD49; Tue, 31 Jul 2018 08:45:03 +0000 (UTC) Received: by mail-wm0-f51.google.com with SMTP id y9-v6so2191839wma.5; Tue, 31 Jul 2018 01:45:03 -0700 (PDT) Received: from clem.localdomain ([2a01:e34:ec25:e330:f2d5:bfff:fe6e:3278]) by smtp.gmail.com with ESMTPSA id s2-v6sm25103775wrn.83.2018.07.31.01.45.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Jul 2018 01:45:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=m2KczySjWF2uPc6HMQzm2Ui20XtxCqSop/eLGOyF8fw=; b=d+CaWh1w77y6m1apHTJ8ImxhPKAxVxxZpbhC/NazQgtv2nvvFv3bmFv1mx4jnxCg4X HBNRkCHSc+9XsrOsACt+zMoIqXOKS6YGwWaacO7CGhFpgIVqZTi3bPLsOl+6mjomRNxE mwYx6JRb4edSnKwBuYIb3il9UhueCWW/vaRl0w0aH/NQuP9/crcZ2bw9fvLBP5xIQPsd EQXutdBdlXWv0Szio6oVNpW40JfOynkvxlOdAKkypWaLwzMgapdqWw+E/90eI13rb87v 5g6C3ZLdbmLU+Oq+xxoR311OC7pLKu0xEWo8YrV3nQ5ZqpBGxojkHIx4iPOxTmYl7WFs 9JXQ== X-Gm-Message-State: AOUpUlEadWRZcbdITt0mw1y5IYs3EVSFYwpAGkBKklr1W2odrqAVldkv gShGCu4BW/jVqaagLiz8gN6lOL9c9XQ= X-Google-Smtp-Source: AAOMgpc6RVNu8Jg+BYEerBD033YjdKj/05Kwr6mSTAzSNRFNUAGgXovsRfX8TKCw/ny5tB/yDFBYMw== X-Received: by 2002:a1c:7c13:: with SMTP id x19-v6mr1712386wmc.27.1533026701544; Tue, 31 Jul 2018 01:45:01 -0700 (PDT) From: clem@lse.epita.fr To: mprivozn@redhat.com, phrdina@redhat.com, libvir-list@redhat.com Date: Tue, 31 Jul 2018 10:44:21 +0200 Message-Id: <20180731084423.8607-3-clem@lse.epita.fr> In-Reply-To: <20180731084423.8607-1-clem@lse.epita.fr> References: <20180731084423.8607-1-clem@lse.epita.fr> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 31 Jul 2018 08:45:04 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 31 Jul 2018 08:45:04 +0000 (UTC) for IP:'74.125.82.51' DOMAIN:'mail-wm0-f51.google.com' HELO:'mail-wm0-f51.google.com' FROM:'clementinehayat@gmail.com' RCPT:'' X-RedHat-Spam-Score: -0.028 (FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_PASS) 74.125.82.51 mail-wm0-f51.google.com 74.125.82.51 mail-wm0-f51.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.38 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Clementine Hayat Subject: [libvirt] [PATCH v3 2/4] storage: Introduce iscsi_direct pool type X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.27 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Sun, 05 Aug 2018 08:09:55 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Clementine Hayat Introducing the pool as a noop. Integration inside the build system. Implementation will be in the following commits. Signed-off-by: Clementine Hayat --- configure.ac | 6 +- docs/schemas/storagepool.rng | 35 +++++++++++ docs/storage.html.in | 30 ++++++++++ m4/virt-storage-iscsi-direct.m4 | 41 +++++++++++++ src/conf/domain_conf.c | 1 + src/conf/storage_conf.c | 22 +++++-- src/conf/storage_conf.h | 1 + src/conf/virstorageobj.c | 2 + src/storage/Makefile.inc.am | 22 +++++++ src/storage/storage_backend.c | 6 ++ src/storage/storage_backend_iscsi_direct.c | 58 +++++++++++++++++++ src/storage/storage_backend_iscsi_direct.h | 6 ++ src/storage/storage_driver.c | 1 + .../pool-iscsi-direct-auth.xml | 14 +++++ .../pool-iscsi-direct.xml | 12 ++++ .../pool-iscsi-direct-auth.xml | 17 ++++++ .../pool-iscsi-direct.xml | 14 +++++ tests/storagepoolxml2xmltest.c | 2 + tools/virsh-pool.c | 3 + 19 files changed, 287 insertions(+), 6 deletions(-) create mode 100644 m4/virt-storage-iscsi-direct.m4 create mode 100644 src/storage/storage_backend_iscsi_direct.c create mode 100644 src/storage/storage_backend_iscsi_direct.h create mode 100644 tests/storagepoolxml2xmlin/pool-iscsi-direct-auth.xml create mode 100644 tests/storagepoolxml2xmlin/pool-iscsi-direct.xml create mode 100644 tests/storagepoolxml2xmlout/pool-iscsi-direct-auth.xml create mode 100644 tests/storagepoolxml2xmlout/pool-iscsi-direct.xml diff --git a/configure.ac b/configure.ac index 0b682349f6..bd7de04a44 100644 --- a/configure.ac +++ b/configure.ac @@ -566,6 +566,7 @@ LIBVIRT_STORAGE_ARG_DIR LIBVIRT_STORAGE_ARG_FS LIBVIRT_STORAGE_ARG_LVM LIBVIRT_STORAGE_ARG_ISCSI +LIBVIRT_STORAGE_ARG_ISCSI_DIRECT LIBVIRT_STORAGE_ARG_SCSI LIBVIRT_STORAGE_ARG_MPATH LIBVIRT_STORAGE_ARG_DISK @@ -580,6 +581,7 @@ if test "$with_libvirtd" =3D "no"; then with_storage_fs=3Dno with_storage_lvm=3Dno with_storage_iscsi=3Dno + with_storage_iscsi_direct=3Dno with_storage_scsi=3Dno with_storage_mpath=3Dno with_storage_disk=3Dno @@ -600,6 +602,7 @@ LIBVIRT_STORAGE_CHECK_DIR LIBVIRT_STORAGE_CHECK_FS LIBVIRT_STORAGE_CHECK_LVM LIBVIRT_STORAGE_CHECK_ISCSI +LIBVIRT_STORAGE_CHECK_ISCSI_DIRECT LIBVIRT_STORAGE_CHECK_SCSI LIBVIRT_STORAGE_CHECK_MPATH LIBVIRT_STORAGE_CHECK_DISK @@ -610,7 +613,7 @@ LIBVIRT_STORAGE_CHECK_ZFS LIBVIRT_STORAGE_CHECK_VSTORAGE =20 with_storage=3Dno -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 =3D yes; then with_storage=3Dyes break @@ -938,6 +941,7 @@ LIBVIRT_STORAGE_RESULT_DIR LIBVIRT_STORAGE_RESULT_FS LIBVIRT_STORAGE_RESULT_LVM LIBVIRT_STORAGE_RESULT_ISCSI +LIBVIRT_STORAGE_RESULT_ISCSI_DIRECT LIBVIRT_STORAGE_RESULT_SCSI LIBVIRT_STORAGE_RESULT_MPATH LIBVIRT_STORAGE_RESULT_DISK diff --git a/docs/schemas/storagepool.rng b/docs/schemas/storagepool.rng index 52b2044bef..11ac55d06f 100644 --- a/docs/schemas/storagepool.rng +++ b/docs/schemas/storagepool.rng @@ -18,6 +18,7 @@ + @@ -101,6 +102,19 @@ =20 + + + iscsi-direct + + + + + + + + + + scsi @@ -314,6 +328,14 @@ =20 + + + + + + + + @@ -595,6 +617,19 @@ =20 + + + + + + + + + + + + + diff --git a/docs/storage.html.in b/docs/storage.html.in index 1906aa6cd4..744819d99d 100644 --- a/docs/storage.html.in +++ b/docs/storage.html.in @@ -433,6 +433,36 @@ The iSCSI volume pool does not use the volume format type element.

=20 +

iSCSI direct pool

+

+ 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 i= qn. +

+ +

Example pool input

+
+<pool type=3D"iscsi-direct">
+  <name>virtimages</name>
+  <source>
+    <host name=3D"iscsi.example.com"/>
+    <device path=3D"iqn.2013-06.com.example:iscsi-pool"/>
+  </source>
+  <initiator>
+    <iqn name=3D"iqn.2013-06.com.example:iscsi-initiator"/>
+  </initiator>
+</pool>
+ +

Valid pool format types

+

+ The iSCSI volume pool does not use the pool format type element. +

+ +

Valid volume format types

+

+ The iSCSI volume pool does not use the volume format type element. +

+

SCSI pool

This provides a pool based on a SCSI HBA. Volumes are preexisting SC= SI diff --git a/m4/virt-storage-iscsi-direct.m4 b/m4/virt-storage-iscsi-direct= .m4 new file mode 100644 index 0000000000..cc2d490352 --- /dev/null +++ b/m4/virt-storage-iscsi-direct.m4 @@ -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 . +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" =3D "check"; then + with_storage_iscsi_direct=3D$with_libiscsi + fi + if test "$with_storage_iscsi_direct" =3D "yes"; then + AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI_DIRECT], [1], + [whether iSCSI backend for storage driver is enable= d]) + fi + AM_CONDITIONAL([WITH_STORAGE_ISCSI_DIRECT], + [test "$with_storage_iscsi_direct" =3D "yes"]) +]) + +AC_DEFUN([LIBVIRT_STORAGE_RESULT_ISCSI_DIRECT], [ + LIBVIRT_RESULT([iscsi-direct], [$with_storage_iscsi_direct]) +]) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index eff8af20e7..7dcbe8a20b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30252,6 +30252,7 @@ virDomainDiskTranslateSourcePool(virDomainDiskDefPt= r def) =20 break; =20 + case VIR_STORAGE_POOL_ISCSI_DIRECT: case VIR_STORAGE_POOL_ISCSI: if (def->startupPolicy) { virReportError(VIR_ERR_XML_ERROR, "%s", diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 5036ab9ef8..f967ea0f66 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -62,9 +62,9 @@ VIR_ENUM_IMPL(virStoragePool, VIR_STORAGE_POOL_LAST, "dir", "fs", "netfs", "logical", "disk", "iscsi", - "scsi", "mpath", "rbd", - "sheepdog", "gluster", "zfs", - "vstorage") + "iscsi-direct", "scsi", "mpath", + "rbd", "sheepdog", "gluster", + "zfs", "vstorage") =20 VIR_ENUM_IMPL(virStoragePoolFormatFileSystem, VIR_STORAGE_POOL_FS_LAST, @@ -207,6 +207,17 @@ static virStoragePoolTypeInfo poolTypeInfo[] =3D { .formatToString =3D virStoragePoolFormatDiskTypeToString, } }, + {.poolType =3D VIR_STORAGE_POOL_ISCSI_DIRECT, + .poolOptions =3D { + .flags =3D (VIR_STORAGE_POOL_SOURCE_HOST | + VIR_STORAGE_POOL_SOURCE_DEVICE | + VIR_STORAGE_POOL_SOURCE_NETWORK | + VIR_STORAGE_POOL_SOURCE_INITIATOR_IQN), + }, + .volOptions =3D { + .formatToString =3D virStoragePoolFormatDiskTypeToString, + } + }, {.poolType =3D VIR_STORAGE_POOL_SCSI, .poolOptions =3D { .flags =3D (VIR_STORAGE_POOL_SOURCE_ADAPTER), @@ -1000,11 +1011,12 @@ virStoragePoolDefFormatBuf(virBufferPtr buf, if (virStoragePoolSourceFormat(buf, options, &def->source) < 0) return -1; =20 - /* 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 */ if (def->type !=3D VIR_STORAGE_POOL_RBD && def->type !=3D VIR_STORAGE_POOL_SHEEPDOG && - def->type !=3D VIR_STORAGE_POOL_GLUSTER) { + def->type !=3D VIR_STORAGE_POOL_GLUSTER && + def->type !=3D VIR_STORAGE_POOL_ISCSI_DIRECT) { virBufferAddLit(buf, "\n"); virBufferAdjustIndent(buf, 2); =20 diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h index 15dfd8becf..858623783d 100644 --- a/src/conf/storage_conf.h +++ b/src/conf/storage_conf.h @@ -85,6 +85,7 @@ typedef enum { VIR_STORAGE_POOL_LOGICAL, /* Logical volume groups / volumes */ VIR_STORAGE_POOL_DISK, /* Disk partitions */ VIR_STORAGE_POOL_ISCSI, /* iSCSI targets */ + VIR_STORAGE_POOL_ISCSI_DIRECT, /* iSCSI targets using libiscsi */ VIR_STORAGE_POOL_SCSI, /* SCSI HBA */ VIR_STORAGE_POOL_MPATH, /* Multipath devices */ VIR_STORAGE_POOL_RBD, /* RADOS Block Device */ diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index e66b2ebfb2..1c45bb71b9 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -1838,11 +1838,13 @@ virStoragePoolObjSourceFindDuplicateCb(const void *= payload, break; =20 case VIR_STORAGE_POOL_ISCSI: + case VIR_STORAGE_POOL_ISCSI_DIRECT: case VIR_STORAGE_POOL_FS: case VIR_STORAGE_POOL_LOGICAL: case VIR_STORAGE_POOL_DISK: case VIR_STORAGE_POOL_ZFS: if ((data->def->type =3D=3D VIR_STORAGE_POOL_ISCSI || + data->def->type =3D=3D VIR_STORAGE_POOL_ISCSI_DIRECT || data->def->type =3D=3D VIR_STORAGE_POOL_FS || data->def->type =3D=3D VIR_STORAGE_POOL_LOGICAL || data->def->type =3D=3D VIR_STORAGE_POOL_DISK || diff --git a/src/storage/Makefile.inc.am b/src/storage/Makefile.inc.am index ea98c0ee52..b2714fd960 100644 --- a/src/storage/Makefile.inc.am +++ b/src/storage/Makefile.inc.am @@ -31,6 +31,11 @@ STORAGE_DRIVER_ISCSI_SOURCES =3D \ storage/storage_backend_iscsi.c \ $(NULL) =20 +STORAGE_DRIVER_ISCSI_DIRECT_SOURCES =3D \ + storage/storage_backend_iscsi_direct.h \ + storage/storage_backend_iscsi_direct.c \ + $(NULL) + STORAGE_DRIVER_SCSI_SOURCES =3D \ storage/storage_backend_scsi.h \ storage/storage_backend_scsi.c \ @@ -89,6 +94,7 @@ EXTRA_DIST +=3D \ $(STORAGE_FILE_FS_SOURCES) \ $(STORAGE_DRIVER_LVM_SOURCES) \ $(STORAGE_DRIVER_ISCSI_SOURCES) \ + $(STORAGE_DRIVER_ISCSI_DIRECT_SOURCES) \ $(STORAGE_DRIVER_SCSI_SOURCES) \ $(STORAGE_DRIVER_MPATH_SOURCES) \ $(STORAGE_DRIVER_DISK_SOURCES) \ @@ -193,6 +199,22 @@ libvirt_storage_backend_iscsi_la_LIBADD =3D \ $(NULL) endif WITH_STORAGE_ISCSI =20 +if WITH_STORAGE_ISCSI_DIRECT +libvirt_storage_backend_iscsi_direct_la_SOURCES =3D $(STORAGE_DRIVER_ISCSI= _DIRECT_SOURCES) +libvirt_storage_backend_iscsi_direct_la_CFLAGS =3D \ + -I$(srcdir)/conf \ + $(LIBISCSI_CFLAGS) \ + $(AM_CFLAGS) \ + $(NULL) + +storagebackend_LTLIBRARIES +=3D libvirt_storage_backend_iscsi-direct.la +libvirt_storage_backend_iscsi_direct_la_LDFLAGS =3D $(AM_LDFLAGS_MOD) +libvirt_storage_backend_iscsi_direct_la_LIBADD =3D \ + libvirt.la \ + ../gnulib/lib/libgnu.la \ + $(NULL) +endif WITH_STORAGE_ISCSI_DIRECT + if WITH_STORAGE_SCSI libvirt_storage_backend_scsi_la_SOURCES =3D $(STORAGE_DRIVER_SCSI_SOURCES) libvirt_storage_backend_scsi_la_CFLAGS =3D \ diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index 7d226f3d3a..e7fbc37eb1 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -43,6 +43,9 @@ #if WITH_STORAGE_ISCSI # include "storage_backend_iscsi.h" #endif +#if WITH_STORAGE_ISCSI_DIRECT +# include "storage_backend_iscsi_direct.h" +#endif #if WITH_STORAGE_SCSI # include "storage_backend_scsi.h" #endif @@ -122,6 +125,9 @@ virStorageBackendDriversRegister(bool allbackends ATTRI= BUTE_UNUSED) #if WITH_STORAGE_ISCSI VIR_STORAGE_BACKEND_REGISTER(virStorageBackendISCSIRegister, "iscsi"); #endif +#if WITH_STORAGE_ISCSI_DIRECT + VIR_STORAGE_BACKEND_REGISTER(virStorageBackendISCSIDirectRegister, "is= csi-direct"); +#endif #if WITH_STORAGE_SCSI VIR_STORAGE_BACKEND_REGISTER(virStorageBackendSCSIRegister, "scsi"); #endif diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/stora= ge_backend_iscsi_direct.c new file mode 100644 index 0000000000..94c4c989ff --- /dev/null +++ b/src/storage/storage_backend_iscsi_direct.c @@ -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 + * . + * + * Author: Clementine Hayat + */ + +#include + +#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 ATTRIBUT= E_UNUSED) +{ + return 0; +} + +virStorageBackend virStorageBackendISCSIDirect =3D { + .type =3D VIR_STORAGE_POOL_ISCSI_DIRECT, + + .checkPool =3D virStorageBackendISCSIDirectCheckPool, + .refreshPool =3D virStorageBackendISCSIDirectRefreshPool, +}; + +int +virStorageBackendISCSIDirectRegister(void) +{ + return virStorageBackendRegister(&virStorageBackendISCSIDirect); +} diff --git a/src/storage/storage_backend_iscsi_direct.h b/src/storage/stora= ge_backend_iscsi_direct.h new file mode 100644 index 0000000000..545579daf7 --- /dev/null +++ b/src/storage/storage_backend_iscsi_direct.h @@ -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__ */ diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 8070d159ea..c108f026ce 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1566,6 +1566,7 @@ storageVolLookupByPathCallback(virStoragePoolObjPtr o= bj, case VIR_STORAGE_POOL_LOGICAL: case VIR_STORAGE_POOL_DISK: case VIR_STORAGE_POOL_ISCSI: + case VIR_STORAGE_POOL_ISCSI_DIRECT: case VIR_STORAGE_POOL_SCSI: case VIR_STORAGE_POOL_MPATH: case VIR_STORAGE_POOL_VSTORAGE: diff --git a/tests/storagepoolxml2xmlin/pool-iscsi-direct-auth.xml b/tests/= storagepoolxml2xmlin/pool-iscsi-direct-auth.xml new file mode 100644 index 0000000000..96c82e161f --- /dev/null +++ b/tests/storagepoolxml2xmlin/pool-iscsi-direct-auth.xml @@ -0,0 +1,14 @@ + + iscsi-direct-auth + 034d66fc-f507-437a-b552-c479ffd63820 + + + + + + + + + + + diff --git a/tests/storagepoolxml2xmlin/pool-iscsi-direct.xml b/tests/stora= gepoolxml2xmlin/pool-iscsi-direct.xml new file mode 100644 index 0000000000..9a0014bf42 --- /dev/null +++ b/tests/storagepoolxml2xmlin/pool-iscsi-direct.xml @@ -0,0 +1,12 @@ + + iscsi-direct + 034d66fc-f507-437a-b552-c479ffd63819 + + + + + + + + + diff --git a/tests/storagepoolxml2xmlout/pool-iscsi-direct-auth.xml b/tests= /storagepoolxml2xmlout/pool-iscsi-direct-auth.xml new file mode 100644 index 0000000000..63b9105cbf --- /dev/null +++ b/tests/storagepoolxml2xmlout/pool-iscsi-direct-auth.xml @@ -0,0 +1,17 @@ + + iscsi-direct-auth + 034d66fc-f507-437a-b552-c479ffd63820 + 0 + 0 + 0 + + + + + + + + + + + diff --git a/tests/storagepoolxml2xmlout/pool-iscsi-direct.xml b/tests/stor= agepoolxml2xmlout/pool-iscsi-direct.xml new file mode 100644 index 0000000000..84717dd152 --- /dev/null +++ b/tests/storagepoolxml2xmlout/pool-iscsi-direct.xml @@ -0,0 +1,14 @@ + + iscsi-direct + 034d66fc-f507-437a-b552-c479ffd63819 + 0 + 0 + 0 + + + + + + + + diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c index 974f0afe39..28421235bf 100644 --- a/tests/storagepoolxml2xmltest.c +++ b/tests/storagepoolxml2xmltest.c @@ -102,6 +102,8 @@ mymain(void) DO_TEST("pool-zfs-sourcedev"); DO_TEST("pool-rbd"); DO_TEST("pool-vstorage"); + DO_TEST("pool-iscsi-direct-auth"); + DO_TEST("pool-iscsi-direct"); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index 6faff781b2..89206a48f5 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -1203,6 +1203,9 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIB= UTE_UNUSED) case VIR_STORAGE_POOL_ISCSI: flags |=3D VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI; break; + case VIR_STORAGE_POOL_ISCSI_DIRECT: + flags |=3D VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI; + break; case VIR_STORAGE_POOL_SCSI: flags |=3D VIR_CONNECT_LIST_STORAGE_POOLS_SCSI; break; --=20 2.18.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list