gluster: the glfs_io_cbk callback function pointer adds pre/post stat args
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> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
e014dbe74e
commit
0e3b891fef
@ -729,7 +729,11 @@ static struct glfs *qemu_gluster_init(BlockdevOptionsGluster *gconf,
|
|||||||
/*
|
/*
|
||||||
* AIO callback routine called from GlusterFS thread.
|
* 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)
|
||||||
{
|
{
|
||||||
GlusterAIOCB *acb = (GlusterAIOCB *)arg;
|
GlusterAIOCB *acb = (GlusterAIOCB *)arg;
|
||||||
|
|
||||||
|
24
configure
vendored
24
configure
vendored
@ -457,6 +457,7 @@ glusterfs_discard="no"
|
|||||||
glusterfs_fallocate="no"
|
glusterfs_fallocate="no"
|
||||||
glusterfs_zerofill="no"
|
glusterfs_zerofill="no"
|
||||||
glusterfs_ftruncate_has_stat="no"
|
glusterfs_ftruncate_has_stat="no"
|
||||||
|
glusterfs_iocb_has_stat="no"
|
||||||
gtk=""
|
gtk=""
|
||||||
gtk_gl="no"
|
gtk_gl="no"
|
||||||
tls_priority="NORMAL"
|
tls_priority="NORMAL"
|
||||||
@ -4105,6 +4106,25 @@ EOF
|
|||||||
if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
|
if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
|
||||||
glusterfs_ftruncate_has_stat="yes"
|
glusterfs_ftruncate_has_stat="yes"
|
||||||
fi
|
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
|
else
|
||||||
if test "$glusterfs" = "yes" ; then
|
if test "$glusterfs" = "yes" ; then
|
||||||
feature_not_found "GlusterFS backend support" \
|
feature_not_found "GlusterFS backend support" \
|
||||||
@ -6994,6 +7014,10 @@ if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
|
|||||||
echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
|
echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
|
||||||
fi
|
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
|
if test "$libssh2" = "yes" ; then
|
||||||
echo "CONFIG_LIBSSH2=m" >> $config_host_mak
|
echo "CONFIG_LIBSSH2=m" >> $config_host_mak
|
||||||
echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
|
echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
|
||||||
|
Loading…
x
Reference in New Issue
Block a user