s3-vfs_glusterfs: always disable write-behind translator
authorGünther Deschner <gd@samba.org>
Mon, 2 Nov 2020 15:10:44 +0000 (16:10 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 4 Nov 2020 22:53:49 +0000 (22:53 +0000)
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 <gd@samba.org>
Pair-Programmed-With: Anoop C S <anoopcs@samba.org>
Pair-Programmed-With: Sachin Prabhu <sprabhu@redhat.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Wed Nov  4 22:53:49 UTC 2020 on sn-devel-184

source3/modules/vfs_glusterfs.c
source3/wscript

index dacedd8e04a8af12df4754a8946d213dac71bb6e..1ed6235e37f0f683f189caf88b1dd1f497cc6438 100644 (file)
@@ -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);
index d3ef346eecde64ad412d9cf72b439ab779e44827..8829ce880cd55559418f86ab9e81e8146f314976 100644 (file)
@@ -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')