Message ID | 20120807080026.GC7480@in.ibm.com |
---|---|
State | New |
Headers | show |
On Tue, Aug 7, 2012 at 8:00 AM, Bharata B Rao <bharata@linux.vnet.ibm.com> wrote: > qemu: Add a config option for GlusterFS as block backend > > From: Bharata B Rao <bharata@linux.vnet.ibm.com> > > GlusterFS support in QEMU depends on libgfapi, libgfrpc and > libgfxdr provided by GlusterFS. > > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com> > --- > > configure | 34 ++++++++++++++++++++++++++++++++++ > 1 files changed, 34 insertions(+), 0 deletions(-) > > > diff --git a/configure b/configure > index 027a718..5bcf6d5 100755 > --- a/configure > +++ b/configure > @@ -824,6 +824,10 @@ for opt do > ;; > --disable-guest-agent) guest_agent="no" > ;; > + --disable-glusterfs) glusterfs="no" This is the first use of $glusterfs. Please define the default value, the rationale is given at the start of configure: # Default value for a variable defining feature "foo". # * foo="no" feature will only be used if --enable-foo arg is given # * foo="" feature will be searched for, and if found, will be used # unless --disable-foo is given # * foo="yes" this value will only be set by --enable-foo flag. # feature will searched for, # if not found, configure exits with error I think "" would match other features. > + ;; > + --enable-glusterfs) glusterfs="yes" > + ;; > *) echo "ERROR: unknown option $opt"; show_help="yes" > ;; > esac > @@ -1112,6 +1116,8 @@ echo " --disable-guest-agent disable building of the QEMU Guest Agent" > echo " --enable-guest-agent enable building of the QEMU Guest Agent" > echo " --with-coroutine=BACKEND coroutine backend. Supported options:" > echo " gthread, ucontext, sigaltstack, windows" > +echo " --enable-glusterfs enable GlusterFS backend" > +echo " --disable-glusterfs disable GlusterFS backend" > echo "" > echo "NOTE: The object files are built at the place where configure is launched" > exit 1 > @@ -2279,6 +2285,29 @@ EOF > fi > fi > > +########################################## > +# glusterfs probe > +if test "$glusterfs" != "no" ; then > + cat > $TMPC <<EOF > +#include <glusterfs/api/glfs.h> > +int main(void) { > + (void) glfs_new("volume"); > + return 0; > +} > +EOF > + glusterfs_libs="-lgfapi -lgfrpc -lgfxdr" > + if compile_prog "" "$glusterfs_libs" ; then > + glusterfs=yes > + libs_tools="$glusterfs_libs $libs_tools" > + libs_softmmu="$glusterfs_libs $libs_softmmu" > + else > + if test "$glusterfs" = "yes" ; then > + feature_not_found "GlusterFS backend support" > + fi > + glusterfs=no > + fi > +fi > + > # > # Check for xxxat() functions when we are building linux-user > # emulator. This is done because older glibc versions don't > @@ -3104,6 +3133,7 @@ echo "OpenGL support $opengl" > echo "libiscsi support $libiscsi" > echo "build guest agent $guest_agent" > echo "coroutine backend $coroutine_backend" > +echo "GlusterFS support $glusterfs" > > if test "$sdl_too_old" = "yes"; then > echo "-> Your SDL version is too old - please upgrade to have SDL support" > @@ -3441,6 +3471,10 @@ if test "$has_environ" = "yes" ; then > echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak > fi > > +if test "$glusterfs" = "yes" ; then > + echo "CONFIG_GLUSTERFS=y" >> $config_host_mak > +fi > + > # USB host support > case "$usb" in > linux) >
On 08/07/2012 01:00 AM, Bharata B Rao wrote: > qemu: Add a config option for GlusterFS as block backend > > From: Bharata B Rao <bharata@linux.vnet.ibm.com> > > GlusterFS support in QEMU depends on libgfapi, libgfrpc and > libgfxdr provided by GlusterFS. > > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com> > --- > > configure | 34 ++++++++++++++++++++++++++++++++++ > 1 files changed, 34 insertions(+), 0 deletions(-) > > > diff --git a/configure b/configure > index 027a718..5bcf6d5 100755 > --- a/configure > +++ b/configure > @@ -824,6 +824,10 @@ for opt do > ;; > --disable-guest-agent) guest_agent="no" > ;; > + --disable-glusterfs) glusterfs="no" > + ;; > + --enable-glusterfs) glusterfs="yes" > + ;; > *) echo "ERROR: unknown option $opt"; show_help="yes" > ;; > esac > @@ -1112,6 +1116,8 @@ echo " --disable-guest-agent disable building of the QEMU Guest Agent" > echo " --enable-guest-agent enable building of the QEMU Guest Agent" > echo " --with-coroutine=BACKEND coroutine backend. Supported options:" > echo " gthread, ucontext, sigaltstack, windows" > +echo " --enable-glusterfs enable GlusterFS backend" > +echo " --disable-glusterfs disable GlusterFS backend" > echo "" > echo "NOTE: The object files are built at the place where configure is launched" > exit 1 > @@ -2279,6 +2285,29 @@ EOF > fi > fi > > +########################################## > +# glusterfs probe > +if test "$glusterfs" != "no" ; then > + cat > $TMPC <<EOF > +#include <glusterfs/api/glfs.h> > +int main(void) { > + (void) glfs_new("volume"); > + return 0; > +} > +EOF > + glusterfs_libs="-lgfapi -lgfrpc -lgfxdr" > + if compile_prog "" "$glusterfs_libs" ; then > + glusterfs=yes > + libs_tools="$glusterfs_libs $libs_tools" > + libs_softmmu="$glusterfs_libs $libs_softmmu" > + else > + if test "$glusterfs" = "yes" ; then > + feature_not_found "GlusterFS backend support" > + fi > + glusterfs=no > + fi > +fi > + It would be best if the autoconf changes is based on pkgconfig as shown in https://github.com/gluster/glusterfs/blob/master/api/examples/configure.ac. If you do not want to introduce pkgconfig dependency (if you already do not have it) then it would be good to adopt the steps mentioned in section "2." of https://github.com/gluster/glusterfs/blob/master/api/examples/README. That would basically mean including "-I/path/include/glusterfs" in CPPFLAGS and only "#include <api/glfs.h>" instead of <glusterfs/api/glfs.h>. Thanks, Avati > # > # Check for xxxat() functions when we are building linux-user > # emulator. This is done because older glibc versions don't > @@ -3104,6 +3133,7 @@ echo "OpenGL support $opengl" > echo "libiscsi support $libiscsi" > echo "build guest agent $guest_agent" > echo "coroutine backend $coroutine_backend" > +echo "GlusterFS support $glusterfs" > > if test "$sdl_too_old" = "yes"; then > echo "-> Your SDL version is too old - please upgrade to have SDL support" > @@ -3441,6 +3471,10 @@ if test "$has_environ" = "yes" ; then > echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak > fi > > +if test "$glusterfs" = "yes" ; then > + echo "CONFIG_GLUSTERFS=y" >> $config_host_mak > +fi > + > # USB host support > case "$usb" in > linux) >
On Wed, Aug 08, 2012 at 09:19:12AM -0700, Anand Avati wrote: > > It would be best if the autoconf changes is based on pkgconfig as > shown in https://github.com/gluster/glusterfs/blob/master/api/examples/configure.ac. > If you do not want to introduce pkgconfig dependency (if you already > do not have it) then it would be good to adopt the steps mentioned > in section "2." of > https://github.com/gluster/glusterfs/blob/master/api/examples/README. > That would basically mean including "-I/path/include/glusterfs" in > CPPFLAGS and only "#include <api/glfs.h>" instead of > <glusterfs/api/glfs.h>. I don't see others in QEMU doing this currently. I suggest that we have the current patchset in 1.2 and see if such improvements can be done subsequently. Regards, Bharata.
diff --git a/configure b/configure index 027a718..5bcf6d5 100755 --- a/configure +++ b/configure @@ -824,6 +824,10 @@ for opt do ;; --disable-guest-agent) guest_agent="no" ;; + --disable-glusterfs) glusterfs="no" + ;; + --enable-glusterfs) glusterfs="yes" + ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; esac @@ -1112,6 +1116,8 @@ echo " --disable-guest-agent disable building of the QEMU Guest Agent" echo " --enable-guest-agent enable building of the QEMU Guest Agent" echo " --with-coroutine=BACKEND coroutine backend. Supported options:" echo " gthread, ucontext, sigaltstack, windows" +echo " --enable-glusterfs enable GlusterFS backend" +echo " --disable-glusterfs disable GlusterFS backend" echo "" echo "NOTE: The object files are built at the place where configure is launched" exit 1 @@ -2279,6 +2285,29 @@ EOF fi fi +########################################## +# glusterfs probe +if test "$glusterfs" != "no" ; then + cat > $TMPC <<EOF +#include <glusterfs/api/glfs.h> +int main(void) { + (void) glfs_new("volume"); + return 0; +} +EOF + glusterfs_libs="-lgfapi -lgfrpc -lgfxdr" + if compile_prog "" "$glusterfs_libs" ; then + glusterfs=yes + libs_tools="$glusterfs_libs $libs_tools" + libs_softmmu="$glusterfs_libs $libs_softmmu" + else + if test "$glusterfs" = "yes" ; then + feature_not_found "GlusterFS backend support" + fi + glusterfs=no + fi +fi + # # Check for xxxat() functions when we are building linux-user # emulator. This is done because older glibc versions don't @@ -3104,6 +3133,7 @@ echo "OpenGL support $opengl" echo "libiscsi support $libiscsi" echo "build guest agent $guest_agent" echo "coroutine backend $coroutine_backend" +echo "GlusterFS support $glusterfs" if test "$sdl_too_old" = "yes"; then echo "-> Your SDL version is too old - please upgrade to have SDL support" @@ -3441,6 +3471,10 @@ if test "$has_environ" = "yes" ; then echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak fi +if test "$glusterfs" = "yes" ; then + echo "CONFIG_GLUSTERFS=y" >> $config_host_mak +fi + # USB host support case "$usb" in linux)