[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