The Samba-Bugzilla – Attachment 16322 Details for
Bug 14486
vfs_glusterfs: smbtorture test smb2.rw.rw1 failure on distributed disperse volume
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch with cherry-pick information for 4.13, 4.12 and 4.11
bug14486.patch (text/plain), 6.72 KB, created by
Karolin Seeger
on 2020-11-03 07:25:16 UTC
(
hide
)
Description:
Patch with cherry-pick information for 4.13, 4.12 and 4.11
Filename:
MIME Type:
Creator:
Karolin Seeger
Created:
2020-11-03 07:25:16 UTC
Size:
6.72 KB
patch
obsolete
>From 9992870192041aa810fc7479b30d362a6cc47bca Mon Sep 17 00:00:00 2001 >From: Sachin Prabhu <sprabhu@redhat.com> >Date: Thu, 15 Oct 2020 12:14:33 +0100 >Subject: [PATCH 1/3] docs-xml/manpages: Add warning about write-behind > translator for vfs_glusterfs > >Add warning about data corruption with the write-behind translator. > >The data corruption is highlighted by the smbtorture test smb2.rw.rw1. >More information about this data corruption issue is available in the >bz. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486 > >Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> >Reviewed-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Guenther Deschner <gd@samba.org> >(cherry picked from commit 08f8f665d409ee7b93840c25a8142f2ce8bacfa1) >--- > docs-xml/manpages/vfs_glusterfs.8.xml | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > >diff --git a/docs-xml/manpages/vfs_glusterfs.8.xml b/docs-xml/manpages/vfs_glusterfs.8.xml >index cf3b8e5e384..7a4da1af919 100644 >--- a/docs-xml/manpages/vfs_glusterfs.8.xml >+++ b/docs-xml/manpages/vfs_glusterfs.8.xml >@@ -161,6 +161,28 @@ > > </refsect1> > >+<refsect1> >+ <title>CAVEATS</title> >+ >+ <para> >+ The GlusterFS write-behind performance translator, when used >+ with Samba, could be a source of data corruption. The >+ translator, while processing a write call, immediately returns >+ success but continues writing the data to the server in the >+ background. This can cause data corruption when two clients >+ relying on Samba to provide data consistency are operating on >+ the same file. >+ </para> >+ <para> >+ The write-behind translator is enabled by default on GlusterFS. >+ The vfs_glusterfs plugin will check for the presence of the >+ translator and refuse to connect if detected. >+ Please disable the write-behind translator for the GlusterFS >+ volume to allow the plugin to connect to the volume. >+ </para> >+</refsect1> >+ >+ > <refsect1> > <title>VERSION</title> > >-- >2.17.1 > > >From d73c771bb4156a8140151e5e5cad8d6bb80da97f Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org> >Date: Mon, 2 Nov 2020 12:30:36 +0100 >Subject: [PATCH 2/3] s3-vfs_glusterfs: refuse connection when write-behind > xlator is present > >s3-vfs_glusterfs: refuse connection when write-behind xlator is present > >Once the new glusterfs api is available we will programmtically disable >the translator, for now we just refuse the connection as there is >a potential for serious data damage. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486 > >Guenther > >Signed-off-by: Guenther Deschner <gd@samba.org> >Pair-Programmed-With: Sachin Prabhu <sprabhu@redhat.com> >Pair-Programmed-With: Anoop C S <anoopcs@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Mon Nov 2 21:40:33 UTC 2020 on sn-devel-184 > >(cherry picked from commit 2a49ccbcf5e3ff0f6833bcb7f04b800125f1783f) >--- > source3/modules/vfs_glusterfs.c | 89 +++++++++++++++++++++++++++++++++ > 1 file changed, 89 insertions(+) > >diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c >index bf7244ea3a5..8a25eb9feb0 100644 >--- a/source3/modules/vfs_glusterfs.c >+++ b/source3/modules/vfs_glusterfs.c >@@ -264,6 +264,90 @@ out: > > /* Disk Operations */ > >+static int check_for_write_behind_translator(TALLOC_CTX *mem_ctx, >+ glfs_t *fs, >+ const char *volume) >+{ >+ char *buf = NULL; >+ char **lines = NULL; >+ int numlines = 0; >+ int i; >+ char *option; >+ bool write_behind_present = false; >+ size_t newlen; >+ int ret; >+ >+ ret = glfs_get_volfile(fs, NULL, 0); >+ if (ret == 0) { >+ DBG_ERR("%s: Failed to get volfile for " >+ "volume (%s): No volfile\n", >+ volume, >+ strerror(errno)); >+ return -1; >+ } >+ if (ret > 0) { >+ DBG_ERR("%s: Invalid return %d for glfs_get_volfile for " >+ "volume (%s): No volfile\n", >+ volume, >+ ret, >+ strerror(errno)); >+ return -1; >+ } >+ >+ newlen = 0 - ret; >+ >+ buf = talloc_zero_array(mem_ctx, char, newlen); >+ if (buf == NULL) { >+ return -1; >+ } >+ >+ ret = glfs_get_volfile(fs, buf, newlen); >+ if (ret != newlen) { >+ TALLOC_FREE(buf); >+ DBG_ERR("%s: Failed to get volfile for volume (%s)\n", >+ volume, strerror(errno)); >+ return -1; >+ } >+ >+ option = talloc_asprintf(mem_ctx, "volume %s-write-behind", volume); >+ if (option == NULL) { >+ TALLOC_FREE(buf); >+ return -1; >+ } >+ >+ lines = file_lines_parse(buf, >+ newlen, >+ &numlines, >+ mem_ctx); >+ if (lines == NULL || numlines <= 0) { >+ TALLOC_FREE(option); >+ TALLOC_FREE(buf); >+ return -1; >+ } >+ >+ for (i=0; i < numlines; i++) { >+ if (strequal(lines[i], option)) { >+ write_behind_present = true; >+ break; >+ } >+ } >+ >+ if (write_behind_present) { >+ DBG_ERR("Write behind translator is enabled for " >+ "volume (%s), refusing to connect! " >+ "Please check the vfs_glusterfs(8) manpage for " >+ "further details.\n", >+ volume); >+ TALLOC_FREE(option); >+ TALLOC_FREE(buf); >+ return -1; >+ } >+ >+ TALLOC_FREE(option); >+ TALLOC_FREE(buf); >+ return 0; >+} >+ > static int vfs_gluster_connect(struct vfs_handle_struct *handle, > const char *service, > const char *user) >@@ -363,6 +447,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; >+ } >+ > ret = glfs_set_preopened(volume, handle->conn->connectpath, fs); > if (ret < 0) { > DEBUG(0, ("%s: Failed to register volume (%s)\n", >-- >2.17.1 > > >From f537c45d1e24159515d4af712f408390c1be0077 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Mon, 2 Nov 2020 15:46:51 -0800 >Subject: [PATCH 3/3] s3: modules: vfs_glusterfs: Fix leak of char **lines onto > mem_ctx on return. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486 > >Signed-off-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Andrew Bartlett <abartlet@samba.org> > >Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> >Autobuild-Date(master): Tue Nov 3 01:56:59 UTC 2020 on sn-devel-184 > >(cherry picked from commit 7d846cd178d653600c71ee4bd6a491a9e48a56da) >--- > source3/modules/vfs_glusterfs.c | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c >index 8a25eb9feb0..3cbb1ab6cb6 100644 >--- a/source3/modules/vfs_glusterfs.c >+++ b/source3/modules/vfs_glusterfs.c >@@ -338,11 +338,13 @@ static int check_for_write_behind_translator(TALLOC_CTX *mem_ctx, > "Please check the vfs_glusterfs(8) manpage for " > "further details.\n", > volume); >+ TALLOC_FREE(lines); > TALLOC_FREE(option); > TALLOC_FREE(buf); > return -1; > } > >+ TALLOC_FREE(lines); > TALLOC_FREE(option); > TALLOC_FREE(buf); > return 0; >-- >2.17.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
jra
:
review+
gd
:
review+
kseeger
:
review?
(
abartlet
)
anoopcs
:
review+
Actions:
View
Attachments on
bug 14486
:
16217
|
16218
|
16226
|
16319
|
16320
| 16322 |
16324
|
16333
|
16345
|
16346
|
16354
|
16355