All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Garzarella <sgarzare@redhat.com>
To: Niels de Vos <ndevos@redhat.com>
Cc: qemu-block@nongnu.org, integration@gluster.org,
	qemu-devel@nongnu.org, Cole Robinson <crobinso@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 2/2] gluster: the glfs_io_cbk callback function pointer adds pre/post stat args
Date: Wed, 6 Mar 2019 11:52:06 +0100	[thread overview]
Message-ID: <20190306105206.5f6bjbc5cncty6bt@steredhat.homenet.telecomitalia.it> (raw)
In-Reply-To: <20190305154634.4609-3-ndevos@redhat.com>

On Tue, Mar 05, 2019 at 04:46:34PM +0100, Niels de Vos wrote:
> The glfs_*_async() functions do a callback once finished. This callback
> has changed its arguments, pre- and post-stat structures have been
> added. This makes it possible to improve caching, which is useful for
> Samba and NFS-Ganesha, but not so much for QEMU. Gluster 6 is the first
> release that includes these new arguments.
> 
> With an additional detection in ./configure, the new arguments can
> conditionally get included in the glfs_io_cbk handler.
> 
> Signed-off-by: Niels de Vos <ndevos@redhat.com>
> 
> --
> v2: correct typo in commit message (Kevin Wolf)

Also here, please use 3 dashes or move below.

> ---
>  block/gluster.c |  6 +++++-
>  configure       | 24 ++++++++++++++++++++++++
>  2 files changed, 29 insertions(+), 1 deletion(-)
> 
> diff --git a/block/gluster.c b/block/gluster.c
> index f853aa87f4..51f184cbd8 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -729,7 +729,11 @@ static struct glfs *qemu_gluster_init(BlockdevOptionsGluster *gconf,
>  /*
>   * AIO callback routine called from GlusterFS thread.
>   */
> -static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
> +static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret,
> +#ifdef CONFIG_GLUSTERFS_IOCB_HAS_STAT
> +                                 struct glfs_stat *pre, struct glfs_stat *post,
> +#endif
> +                                 void *arg)

I'm note sure that is a good idea put function parameters in the ifdef
block.
What do you think to rename gluster_finish_aiocb() in
gluster_finish_aiocb_common() or something like that and create two
functions for the two cases with the right parameters that call
gluster_finish_aiocb_common()?

#ifdef CONFIG_GLUSTERFS_IOCB_HAS_STAT
static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret,
                                 struct glfs_stat *pre, struct glfs_stat *post,
                                 void *arg)
{
    gluster_finish_aiocb_common(fd, ret, args);
}
#else
static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
{
    gluster_finish_aiocb_common(fd, ret, args);
}
#endif /* CONFIG_GLUSTERFS_IOCB_HAS_STAT */

Thanks,
Stefano

>  {
>      GlusterAIOCB *acb = (GlusterAIOCB *)arg;
>  
> diff --git a/configure b/configure
> index bbfe587b88..db548d9b08 100755
> --- a/configure
> +++ b/configure
> @@ -457,6 +457,7 @@ glusterfs_discard="no"
>  glusterfs_fallocate="no"
>  glusterfs_zerofill="no"
>  glusterfs_ftruncate_has_stat="no"
> +glusterfs_iocb_has_stat="no"
>  gtk=""
>  gtk_gl="no"
>  tls_priority="NORMAL"
> @@ -4097,6 +4098,25 @@ EOF
>      if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
>        glusterfs_ftruncate_has_stat="yes"
>      fi
> +    cat > $TMPC << EOF
> +#include <glusterfs/api/glfs.h>
> +
> +/* new glfs_io_cbk() passes two additional glfs_stat structs */
> +static void
> +glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
> +{}
> +
> +int
> +main(void)
> +{
> +	glfs_io_cbk iocb = &glusterfs_iocb;
> +	iocb(NULL, 0 , NULL, NULL, NULL);
> +	return 0;
> +}
> +EOF
> +    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
> +      glusterfs_iocb_has_stat="yes"
> +    fi
>    else
>      if test "$glusterfs" = "yes" ; then
>        feature_not_found "GlusterFS backend support" \
> @@ -6903,6 +6923,10 @@ if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
>    echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
>  fi
>  
> +if test "$glusterfs_iocb_has_stat" = "yes" ; then
> +  echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
> +fi
> +
>  if test "$libssh2" = "yes" ; then
>    echo "CONFIG_LIBSSH2=m" >> $config_host_mak
>    echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
> -- 
> 2.20.1
> 
> 

  reply	other threads:[~2019-03-06 10:52 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-05 15:46 [Qemu-devel] [PATCH v2 0/2] block: Gluster 6 compatibility Niels de Vos
2019-03-05 15:46 ` [Qemu-devel] [PATCH v5 1/2] block/gluster: Handle changed glfs_ftruncate signature Niels de Vos
2019-03-06 10:46   ` Stefano Garzarella
2019-03-05 15:46 ` [Qemu-devel] [PATCH v2 2/2] gluster: the glfs_io_cbk callback function pointer adds pre/post stat args Niels de Vos
2019-03-06 10:52   ` Stefano Garzarella [this message]
2019-03-08 13:11 ` [Qemu-devel] [Qemu-block] [PATCH v2 0/2] block: Gluster 6 compatibility Kevin Wolf
2019-03-09  9:40   ` Niels de Vos
2019-03-11 11:10     ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190306105206.5f6bjbc5cncty6bt@steredhat.homenet.telecomitalia.it \
    --to=sgarzare@redhat.com \
    --cc=crobinso@redhat.com \
    --cc=integration@gluster.org \
    --cc=ndevos@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.