[libvirt] [PATCHv3 1/4] storage: initial support for linking with libgfapi

Peter Krempa pkrempa at redhat.com
Tue Nov 12 16:17:23 UTC 2013


On 11/12/13 05:19, Eric Blake wrote:
> We support gluster volumes in domain XML, so we also ought to
> support them as a storage pool.  Besides, a future patch will
> want to take advantage of libgfapi to handle the case of a
> gluster device holding qcow2 rather than raw storage, and for
> that to work, we need a storage backend that can read gluster
> storage volume contents.  This sets up the framework.
> 
> * configure.ac (WITH_STORAGE_GLUSTER): New conditional.
> * m4/virt-gluster.m4: new file.
> * libvirt.spec.in (BuildRequires): Support gluster in spec file.
> * src/conf/storage_conf.h (VIR_STORAGE_POOL_GLUSTER): New pool
> type.
> * src/conf/storage_conf.c (poolTypeInfo): Treat similar to
> sheepdog and rbd.
> (virStoragePoolDefFormat): Don't output target for gluster.
> * src/storage/storage_backend_gluster.h: New file.
> * src/storage/storage_backend_gluster.c: Likewise.
> * po/POTFILES.in: Add new file.
> * src/storage/storage_backend.c (backends): Register new type.
> * src/Makefile.am (STORAGE_DRIVER_GLUSTER_SOURCES): Build new files.
> * src/storage/storage_backend.h (_virStorageBackend): Documet
> assumption.
> 
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>  configure.ac                          | 21 ++++++++++++++++
>  libvirt.spec.in                       | 15 ++++++++++++
>  m4/virt-gluster.m4                    | 26 ++++++++++++++++++++
>  po/POTFILES.in                        |  1 +
>  src/Makefile.am                       |  9 +++++++
>  src/conf/storage_conf.c               | 20 ++++++++++++---
>  src/conf/storage_conf.h               |  3 ++-
>  src/storage/storage_backend.c         |  6 +++++
>  src/storage/storage_backend.h         |  6 +++--
>  src/storage/storage_backend_gluster.c | 46 +++++++++++++++++++++++++++++++++++
>  src/storage/storage_backend_gluster.h | 29 ++++++++++++++++++++++
>  11 files changed, 175 insertions(+), 7 deletions(-)
>  create mode 100644 m4/virt-gluster.m4
>  create mode 100644 src/storage/storage_backend_gluster.c
>  create mode 100644 src/storage/storage_backend_gluster.h
> 
> diff --git a/configure.ac b/configure.ac
> index 6003871..b193bc1 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -228,6 +228,7 @@ LIBVIRT_CHECK_CAPNG
>  LIBVIRT_CHECK_CURL
>  LIBVIRT_CHECK_DBUS
>  LIBVIRT_CHECK_FUSE
> +LIBVIRT_CHECK_GLUSTER
>  LIBVIRT_CHECK_HAL
>  LIBVIRT_CHECK_NETCF
>  LIBVIRT_CHECK_NUMACTL
> @@ -1643,6 +1644,10 @@ AC_ARG_WITH([storage-sheepdog],
>    [AS_HELP_STRING([--with-storage-sheepdog],
>      [with Sheepdog backend for the storage driver @<:@default=check@:>@])],
>    [],[with_storage_sheepdog=check])
> +AC_ARG_WITH([storage-gluster],
> +  [AS_HELP_STRING([--with-storage-gluster],
> +    [with Gluster backend for the storage driver @<:@default=check@:>@])],
> +  [],[with_storage_gluster=check])
> 
>  if test "$with_libvirtd" = "no"; then
>    with_storage_dir=no
> @@ -1654,6 +1659,7 @@ if test "$with_libvirtd" = "no"; then
>    with_storage_disk=no
>    with_storage_rbd=no
>    with_storage_sheepdog=no
> +  with_storage_gluster=no
>  fi
>  if test "$with_storage_dir" = "yes" ; then
>    AC_DEFINE_UNQUOTED([WITH_STORAGE_DIR], 1, [whether directory backend for storage driver is enabled])
> @@ -1855,6 +1861,19 @@ fi
>  AM_CONDITIONAL([WITH_STORAGE_SHEEPDOG],
>    [test "$with_storage_sheepdog" = "yes"])
> 
> +LIBGLUSTER_LIBS=
> +if test "$with_storage_gluster" = "check"; then
> +  with_storage_gluster=$with_glfs
> +fi
> +if test "$with_storage_gluster" = "yes"; then
> +  if test "$with_glfs" = no; then
> +    AC_MSG_ERROR([Need glfs (libgfapi) for gluster storage driver])
> +  fi
> +  AC_DEFINE_UNQUOTED([WITH_STORAGE_GLUSTER], [1],
> +    [whether Gluster backend for storage driver is enabled])
> +fi
> +AM_CONDITIONAL([WITH_STORAGE_GLUSTER], [test "$with_storage_gluster" = "yes"])
> +
> 
>  LIBPARTED_CFLAGS=
>  LIBPARTED_LIBS=
> @@ -2667,6 +2686,7 @@ AC_MSG_NOTICE([   mpath: $with_storage_mpath])
>  AC_MSG_NOTICE([    Disk: $with_storage_disk])
>  AC_MSG_NOTICE([     RBD: $with_storage_rbd])
>  AC_MSG_NOTICE([Sheepdog: $with_storage_sheepdog])
> +AC_MSG_NOTICE([ Gluster: $with_storage_gluster])
>  AC_MSG_NOTICE([])
>  AC_MSG_NOTICE([Security Drivers])
>  AC_MSG_NOTICE([])
> @@ -2692,6 +2712,7 @@ LIBVIRT_RESULT_CAPNG
>  LIBVIRT_RESULT_CURL
>  LIBVIRT_RESULT_DBUS
>  LIBVIRT_RESULT_FUSE
> +LIBVIRT_RESULT_GLUSTER
>  LIBVIRT_RESULT_HAL
>  LIBVIRT_RESULT_NETCF
>  LIBVIRT_RESULT_NUMACTL
> diff --git a/libvirt.spec.in b/libvirt.spec.in
> index 72815f4..a90ee2b 100644
> --- a/libvirt.spec.in
> +++ b/libvirt.spec.in
> @@ -98,6 +98,11 @@
>  %else
>      %define with_storage_sheepdog 0
>  %endif
> +%if 0%{?fedora} >= 19
> +    %define with_storage_gluster 0%{!?_without_storage_gluster:%{server_drivers}}
> +%else
> +    %define with_storage_gluster 0
> +%endif
>  %define with_numactl          0%{!?_without_numactl:%{server_drivers}}
>  %define with_selinux          0%{!?_without_selinux:%{server_drivers}}
> 
> @@ -281,6 +286,7 @@
>      %define with_storage_mpath 0
>      %define with_storage_rbd 0
>      %define with_storage_sheepdog 0
> +    %define with_storage_gluster 0
>      %define with_storage_disk 0
>  %endif
> 
> @@ -555,6 +561,10 @@ BuildRequires: device-mapper-devel
>  BuildRequires: ceph-devel
>      %endif
>  %endif
> +%if %{with_storage_gluster}
> +BuildRequires: glusterfs-api-devel
> +BuildRequires: glusterfs-devel
> +%endif
>  %if %{with_numactl}
>  # For QEMU/LXC numa info
>  BuildRequires: numactl-devel
> @@ -1274,6 +1284,10 @@ of recent versions of Linux (and other OSes).
>      %define _without_storage_sheepdog --without-storage-sheepdog
>  %endif
> 
> +%if ! %{with_storage_gluster}
> +    %define _without_storage_gluster --without-storage-gluster
> +%endif
> +
>  %if ! %{with_numactl}
>      %define _without_numactl --without-numactl
>  %endif
> @@ -1396,6 +1410,7 @@ of recent versions of Linux (and other OSes).
>             %{?_without_storage_mpath} \
>             %{?_without_storage_rbd} \
>             %{?_without_storage_sheepdog} \
> +           %{?_without_storage_gluster} \
>             %{?_without_numactl} \
>             %{?_without_numad} \
>             %{?_without_capng} \
> diff --git a/m4/virt-gluster.m4 b/m4/virt-gluster.m4
> new file mode 100644
> index 0000000..4851e17
> --- /dev/null
> +++ b/m4/virt-gluster.m4
> @@ -0,0 +1,26 @@
> +dnl The gluster libgfapi.so library
> +dnl
> +dnl Copyright (C) 2013 Red Hat, Inc.
> +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_CHECK_GLUSTER],[
> +  LIBVIRT_CHECK_PKG([GLFS], [glusterfs-api], [3.0])
> +])
> +
> +AC_DEFUN([LIBVIRT_RESULT_GLUSTER],[
> +  LIBVIRT_RESULT_LIB([GLFS])
> +])

For the hunks above, I can't provide any useful feedback as I don't
really have experience with automake and stuff ... :/

<snip>

Weak ACK based on complile testing the stuff above.

Peter



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20131112/3fb55d81/attachment-0001.sig>


More information about the libvir-list mailing list