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

John Ferlan jferlan at redhat.com
Wed Jan 18 21:00:00 UTC 2017



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:"));
> 




More information about the libvir-list mailing list