From d4c57f3dcc27db49e10df0f1a23690dbb79ca2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Mon, 2 Nov 2020 16:10:44 +0100 Subject: [PATCH] s3-vfs_glusterfs: always disable write-behind translator The "pass-through" option has now been merged upstream as of: https://github.com/gluster/glusterfs/pull/1640 BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486 Guenther Signed-off-by: Guenther Deschner Pair-Programmed-With: Anoop C S Pair-Programmed-With: Sachin Prabhu Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Wed Nov 4 22:53:49 UTC 2020 on sn-devel-184 (cherry picked from commit a51cda69ec6a017ad04b5690a3ae67a5478deee9) --- source3/modules/vfs_glusterfs.c | 20 +++++++++++++++++--- source3/wscript | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c index 3cbb1ab6cb6..bdfe35ced82 100644 --- a/source3/modules/vfs_glusterfs.c +++ b/source3/modules/vfs_glusterfs.c @@ -363,6 +363,7 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle, glfs_t *fs = NULL; TALLOC_CTX *tmp_ctx; int ret = 0; + bool write_behind_pass_through_set = false; tmp_ctx = talloc_new(NULL); if (tmp_ctx == NULL) { @@ -435,6 +436,17 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle, goto done; } +#ifdef HAVE_GFAPI_VER_7_9 + ret = glfs_set_xlator_option(fs, "*-write-behind", "pass-through", + "true"); + if (ret < 0) { + DBG_ERR("%s: Failed to set xlator option: pass-through\n", + volume); + goto done; + } + write_behind_pass_through_set = true; +#endif + ret = glfs_set_logging(fs, logfile, loglevel); if (ret < 0) { DEBUG(0, ("%s: Failed to set logfile %s loglevel %d\n", @@ -449,9 +461,11 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle, goto done; } - ret = check_for_write_behind_translator(tmp_ctx, fs, volume); - if (ret < 0) { - goto done; + if (!write_behind_pass_through_set) { + ret = check_for_write_behind_translator(tmp_ctx, fs, volume); + if (ret < 0) { + goto done; + } } ret = glfs_set_preopened(volume, handle->conn->connectpath, fs); diff --git a/source3/wscript b/source3/wscript index 335cfd797f1..9920432a360 100644 --- a/source3/wscript +++ b/source3/wscript @@ -1766,6 +1766,9 @@ main() { conf.CHECK_CFG(package='glusterfs-api', args='"glusterfs-api >= 7.6" --cflags --libs', msg='Checking for glusterfs-api >= 7.6', uselib_store="GFAPI_VER_7_6") + conf.CHECK_CFG(package='glusterfs-api', args='"glusterfs-api >= 7.9" --cflags --libs', + msg='Checking for glusterfs-api >= 7.9', + uselib_store="GFAPI_VER_7_9") else: conf.SET_TARGET_TYPE('gfapi', 'EMPTY') conf.undefine('HAVE_GLUSTERFS') -- 2.28.0