[libvirt] [PATCH v2 2/5] storage: vstorage empty backend

Olga Krishtal okrishtal at virtuozzo.com
Thu Jan 19 14:27:34 UTC 2017


On 19/01/17 00:00, John Ferlan wrote:
>
> On 01/17/2017 09:10 AM, Olga Krishtal wrote:
>> Added general defenitions for vstorage pool backend
> definitions
>
>> Signed-off-by: Olga Krishtal <okrishtal at virtuozzo.com>
>> ---
>>   include/libvirt/libvirt-storage.h      |  1 +
>>   po/POTFILES.in                         |  1 +
>>   src/Makefile.am                        |  9 +++++++++
>>   src/conf/storage_conf.c                | 17 ++++++++++++++++-
>>   src/conf/storage_conf.h                |  1 +
>>   src/storage/storage_backend.c          |  6 ++++++
>>   src/storage/storage_backend_vstorage.c | 16 ++++++++++++++++
>>   src/storage/storage_backend_vstorage.h | 28 ++++++++++++++++++++++++++++
>>   src/storage/storage_driver.c           |  2 ++
>>   tools/virsh-pool.c                     |  3 +++
>>   tools/virsh.c                          |  3 +++
>>   11 files changed, 86 insertions(+), 1 deletion(-)
>>   create mode 100644 src/storage/storage_backend_vstorage.c
>>   create mode 100644 src/storage/storage_backend_vstorage.h
>>
> FWIW: The could be conflicts w/ pkrempa's series to move the bulk of
> storage_backend.c into src/util/storage_util.c.  I'm watching both and
> can make appropriate adjustments
>
>
>> diff --git a/include/libvirt/libvirt-storage.h b/include/libvirt/libvirt-storage.h
>> index 8a861e4..45ec720 100644
>> --- a/include/libvirt/libvirt-storage.h
>> +++ b/include/libvirt/libvirt-storage.h
>> @@ -240,6 +240,7 @@ typedef enum {
>>       VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG      = 1 << 15,
>>       VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER       = 1 << 16,
>>       VIR_CONNECT_LIST_STORAGE_POOLS_ZFS           = 1 << 17,
>> +    VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE      = 1 << 18,
>>   } virConnectListAllStoragePoolsFlags;
>>   
>>   int                     virConnectListAllStoragePools(virConnectPtr conn,
>> diff --git a/po/POTFILES.in b/po/POTFILES.in
>> index 59efd91..b4fac0e 100644
>> --- a/po/POTFILES.in
>> +++ b/po/POTFILES.in
>> @@ -175,6 +175,7 @@ src/storage/storage_backend_mpath.c
>>   src/storage/storage_backend_rbd.c
>>   src/storage/storage_backend_scsi.c
>>   src/storage/storage_backend_sheepdog.c
>> +src/storage/storage_backend_vstorage.c
>>   src/storage/storage_backend_zfs.c
>>   src/storage/storage_driver.c
>>   src/test/test_driver.c
> This causes a syntax-check failure for *this* patch because there's
> nothing to translate in it yet, it belongs in the next patch... Causes
> syntax-check failure.
>
> I will adjust before pushing
>
>> diff --git a/src/Makefile.am b/src/Makefile.am
>> index 21a78e0..78e64f2 100644
>> --- a/src/Makefile.am
>> +++ b/src/Makefile.am
>> @@ -1005,6 +1005,10 @@ STORAGE_DRIVER_GLUSTER_SOURCES =				\
>>   STORAGE_DRIVER_ZFS_SOURCES =					\
>>                   storage/storage_backend_zfs.h storage/storage_backend_zfs.c
>>   
>> +STORAGE_DRIVER_VSTORAGE_SOURCES =              \
>> +                storage/storage_backend_vstorage.h \
>> +                storage/storage_backend_vstorage.c
>> +
> It seems the \ should be aligned as they are for others (uses <tabs> too
> - I usually just cut-n-paste the previous line and alter the name).
>
> I will adjust before pushing.
>
>
>>   STORAGE_HELPER_DISK_SOURCES =					\
>>   		storage/parthelper.c
>>   
>> @@ -1712,6 +1716,10 @@ if WITH_STORAGE_ZFS
>>   libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_ZFS_SOURCES)
>>   endif WITH_STORAGE_ZFS
>>   
>> +if WITH_STORAGE_VSTORAGE
>> +libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_VSTORAGE_SOURCES)
>> +endif WITH_STORAGE_VSTORAGE
>> +
>>   if WITH_NODE_DEVICES
>>   # Needed to keep automake quiet about conditionals
>>   if WITH_DRIVER_MODULES
>> @@ -1923,6 +1931,7 @@ EXTRA_DIST +=							\
>>   		$(STORAGE_DRIVER_SHEEPDOG_SOURCES)		\
>>   		$(STORAGE_DRIVER_GLUSTER_SOURCES)		\
>>   		$(STORAGE_DRIVER_ZFS_SOURCES)			\
>> +        $(STORAGE_DRIVER_VSTORAGE_SOURCES)      \
> Again more alignment stuff. Make it all look similar.  I can change. Use
> of <tabs> too
>
> The remainder seems OK
>
> ACK w/ adjustments and I'll push once pkrempa's series is in.
>
> John
>
>>   		$(NODE_DEVICE_DRIVER_SOURCES)			\
>>   		$(NODE_DEVICE_DRIVER_HAL_SOURCES)		\
>>   		$(NODE_DEVICE_DRIVER_UDEV_SOURCES)		\
>> diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
>> index c53f080..c9b93aa 100644
>> --- a/src/conf/storage_conf.c
>> +++ b/src/conf/storage_conf.c
>> @@ -60,7 +60,8 @@ VIR_ENUM_IMPL(virStoragePool,
>>                 "dir", "fs", "netfs",
>>                 "logical", "disk", "iscsi",
>>                 "scsi", "mpath", "rbd",
>> -              "sheepdog", "gluster", "zfs")
>> +              "sheepdog", "gluster", "zfs",
>> +              "vstorage")
>>   
>>   VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
>>                 VIR_STORAGE_POOL_FS_LAST,
>> @@ -274,6 +275,16 @@ static virStoragePoolTypeInfo poolTypeInfo[] = {
>>            .defaultFormat = VIR_STORAGE_FILE_RAW,
>>        },
>>       },
>> +    {.poolType = VIR_STORAGE_POOL_VSTORAGE,
>> +     .poolOptions = {
>> +        .flags = VIR_STORAGE_POOL_SOURCE_NAME,
>> +     },
>> +     .volOptions = {
>> +        .defaultFormat = VIR_STORAGE_FILE_RAW,
>> +        .formatFromString = virStorageVolumeFormatFromString,
>> +        .formatToString = virStorageFileFormatTypeToString,
>> +     },
>> +    },
>>   };
>>   
>>   
>> @@ -2611,6 +2622,10 @@ virStoragePoolSourceFindDuplicate(virConnectPtr conn,
>>               /* Only one mpath pool is valid per host */
>>               matchpool = pool;
>>               break;
>> +        case VIR_STORAGE_POOL_VSTORAGE:
>> +            if (STREQ(pool->def->source.name, def->source.name))
>> +                matchpool = pool;
>> +            break;
>>           case VIR_STORAGE_POOL_RBD:
>>           case VIR_STORAGE_POOL_LAST:
>>               break;
>> diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
>> index b35471d..e952f5f 100644
>> --- a/src/conf/storage_conf.h
>> +++ b/src/conf/storage_conf.h
>> @@ -95,6 +95,7 @@ typedef enum {
>>       VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */
>>       VIR_STORAGE_POOL_GLUSTER,  /* Gluster device */
>>       VIR_STORAGE_POOL_ZFS,      /* ZFS */
>> +    VIR_STORAGE_POOL_VSTORAGE, /* Virtuozzo Storage */
>>   
>>       VIR_STORAGE_POOL_LAST,
>>   } virStoragePoolType;
>> diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
>> index 18433e9..207a534 100644
>> --- a/src/storage/storage_backend.c
>> +++ b/src/storage/storage_backend.c
>> @@ -103,6 +103,9 @@
>>   #if WITH_STORAGE_ZFS
>>   # include "storage_backend_zfs.h"
>>   #endif
>> +#if WITH_STORAGE_VSTORAGE
>> +# include "storage_backend_vstorage.h"
>> +#endif
>>   
>>   #define VIR_FROM_THIS VIR_FROM_STORAGE
>>   
>> @@ -143,6 +146,9 @@ static virStorageBackendPtr backends[] = {
>>   #if WITH_STORAGE_ZFS
>>       &virStorageBackendZFS,
>>   #endif
>> +#if WITH_STORAGE_VSTORAGE
>> +    &virStorageBackendVstorage,
>> +#endif
>>       NULL
>>   };
>>   
>> diff --git a/src/storage/storage_backend_vstorage.c b/src/storage/storage_backend_vstorage.c
>> new file mode 100644
>> index 0000000..3a57385
>> --- /dev/null
>> +++ b/src/storage/storage_backend_vstorage.c
>> @@ -0,0 +1,16 @@
>> +#include <config.h>
>> +
>> +#include "viralloc.h"
>> +#include "virerror.h"
>> +#include "virfile.h"
>> +#include "storage_backend_vstorage.h"
>> +#include "virlog.h"
>> +#include "virstring.h"
>> +
>> +#define VIR_FROM_THIS VIR_FROM_STORAGE
>> +
>> +VIR_LOG_INIT("storage.storage_backend_vstorage");
>> +
>> +virStorageBackend virStorageBackendVstorage = {
>> +    .type = VIR_STORAGE_POOL_VSTORAGE,
>> +};
>> diff --git a/src/storage/storage_backend_vstorage.h b/src/storage/storage_backend_vstorage.h
>> new file mode 100644
>> index 0000000..262e454
>> --- /dev/null
>> +++ b/src/storage/storage_backend_vstorage.h
>> @@ -0,0 +1,28 @@
>> +/*
>> + * storage_backend_vstorage.h: storage backend for Virtuozzo storage
>> + * handling
>> + *
>> + * 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/>.
>> + *
>> + */
>> +
>> +#ifndef __VIR_STORAGE_BACKEND_VSTORAGE_H__
>> +# define __VIR_STORAGE_BACKEND_VSTORAGE_H__
>> +
>> +# include "storage_backend.h"
>> +
>> +extern virStorageBackend virStorageBackendVstorage;
>> +
>> +#endif /* __VIR_STORAGE_BACKEND_VSTORAGE_H__ */
>> diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
>> index 8f1d3f0..257af80 100644
>> --- a/src/storage/storage_driver.c
>> +++ b/src/storage/storage_driver.c
>> @@ -1618,6 +1618,7 @@ storageVolLookupByPath(virConnectPtr conn,
>>               case VIR_STORAGE_POOL_ISCSI:
>>               case VIR_STORAGE_POOL_SCSI:
>>               case VIR_STORAGE_POOL_MPATH:
>> +            case VIR_STORAGE_POOL_VSTORAGE:
>>                   stable_path = virStorageBackendStablePath(pool,
>>                                                             cleanpath,
>>                                                             false);
>> @@ -3501,6 +3502,7 @@ virStorageTranslateDiskSourcePool(virConnectPtr conn,
>>       case VIR_STORAGE_POOL_DISK:
>>       case VIR_STORAGE_POOL_SCSI:
>>       case VIR_STORAGE_POOL_ZFS:
>> +    case VIR_STORAGE_POOL_VSTORAGE:
>>           if (!(def->src->path = virStorageVolGetPath(vol)))
>>               goto cleanup;
>>   
>> diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
>> index 6806b7a..f766be6 100644
>> --- a/tools/virsh-pool.c
>> +++ b/tools/virsh-pool.c
>> @@ -1166,6 +1166,9 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
>>               case VIR_STORAGE_POOL_ZFS:
>>                   flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ZFS;
>>                   break;
>> +            case VIR_STORAGE_POOL_VSTORAGE:
>> +                flags |= VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE;
>> +                break;
>>               case VIR_STORAGE_POOL_LAST:
>>                   break;
>>               }
>> diff --git a/tools/virsh.c b/tools/virsh.c
>> index 1068447..7eb51ab 100644
>> --- a/tools/virsh.c
>> +++ b/tools/virsh.c
>> @@ -648,6 +648,9 @@ virshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
>>   #ifdef WITH_STORAGE_ZFS
>>       vshPrint(ctl, " ZFS");
>>   #endif
>> +#ifdef WITH_STORAGE_VSTORAGE
>> +    vshPrint(ctl, "Virtuozzo Storage");
>> +#endif
>>       vshPrint(ctl, "\n");
>>   
>>       vshPrint(ctl, "%s", _(" Miscellaneous:"));
>>

Ok

-- 
Best regards,
Olga




More information about the libvir-list mailing list