The Samba-Bugzilla – Attachment 15279 Details for
Bug 14010
Unable to create or rename file/directory inside shares configured with vfs_glusterfs_fuse module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch from master for v4.9 and v4.10
patch (text/plain), 4.73 KB, created by
Guenther Deschner
on 2019-07-02 14:07:59 UTC
(
hide
)
Description:
patch from master for v4.9 and v4.10
Filename:
MIME Type:
Creator:
Guenther Deschner
Created:
2019-07-02 14:07:59 UTC
Size:
4.73 KB
patch
obsolete
>From 2d6b4035c1fbb4c9935f7af290f23c693157b35f Mon Sep 17 00:00:00 2001 >From: Michael Adam <obnox@samba.org> >Date: Thu, 20 Jun 2019 15:14:57 +0200 >Subject: [PATCH 1/2] vfs:glusterfs: treat ENOATTR as ENOENT > >The original implementation of the virtual xattr get_real_filename >in gluster was misusing the ENOENT errno as the authoritative anwer >that the file/dir that we were asking the real filename for does not >exist. But since the getxattr call is done on the parent directory, >this is a violation of the getxattr API which uses ENOENT for the >case that the file/dir that the getxattr call is done against does >not exist. > >Now after a recent regression for fuse-mount re-exports due to >gluster mapping ENOENT to ESTALE in the fuse-bridge, the gluster >implementation is changed to more correctly return ENOATTR if the >requested file does not exist. > >This patch changes the glusterfs vfs module to treat ENOATTR as ENOENT >to be fully functional again with latest gluster. > >- Without this patch, samba against a new gluster will work correctly, > but the get_real_filename optimization for a non-existing entry > is lost. > >- With this patch, Samba will not work correctly any more against > very old gluster servers: Those (correctly) returned ENOATTR > always, which Samba originally interpreted as EOPNOTSUPP, triggering > the expensive directory scan. With this patch, ENOATTR is > interpreted as ENOENT, the authoritative answer that the requested > entry does not exist, which is wrong unless it really does not exist. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14010 > >Signed-off-by: Michael Adam <obnox@samba.org> >Reviewed-by: Guenther Deschner <gd@samba.org> >(cherry picked from commit 8899eb21d48b7077328ae560490f9fb9715a6b83) >--- > source3/modules/vfs_glusterfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c >index e23a5efe17f..ab0b86caa55 100644 >--- a/source3/modules/vfs_glusterfs.c >+++ b/source3/modules/vfs_glusterfs.c >@@ -1465,7 +1465,7 @@ static int vfs_gluster_get_real_filename(struct vfs_handle_struct *handle, > GLUSTER_NAME_MAX + 1); > if (ret == -1) { > if (errno == ENOATTR) { >- errno = EOPNOTSUPP; >+ errno = ENOENT; > } > return -1; > } >-- >2.21.0 > > >From 33c366ca9ff47c04feeb21cd6418e75f8da479a6 Mon Sep 17 00:00:00 2001 >From: Michael Adam <obnox@samba.org> >Date: Thu, 20 Jun 2019 15:14:57 +0200 >Subject: [PATCH 2/2] vfs:glusterfs_fuse: treat ENOATTR as ENOENT >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >The original implementation of the virtual xattr get_real_filename >in gluster was misusing the ENOENT errno as the authoritative anwer >that the file/dir that we were asking the real filename for does not >exist. But since the getxattr call is done on the parent directory, >this is a violation of the getxattr API which uses ENOENT for the >case that the file/dir that the getxattr call is done against does >not exist. > >Now after a recent regression for fuse-mount re-exports due to >gluster mapping ENOENT to ESTALE in the fuse-bridge, the gluster >implementation is changed to more correctly return ENOATTR if the >requested file does not exist. > >This patch changes the glusterfs_fuse vfs module to treat ENOATTR as >ENOENT to be fully functional again with latest gluster. > >- Without this patch, samba against a new gluster will work correctly, > but the get_real_filename optimization for a non-existing entry > is lost. > >- With this patch, Samba will not work correctly any more against > very old gluster servers: Those (correctly) returned ENOATTR > always, which Samba originally interpreted as EOPNOTSUPP, triggering > the expensive directory scan. With this patch, ENOATTR is > interpreted as ENOENT, the authoritative answer that the requested > entry does not exist, which is wrong unless it really does not exist. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14010 > >Signed-off-by: Michael Adam <obnox@samba.org> >Reviewed-by: Guenther Deschner <gd@samba.org> > >Autobuild-User(master): Günther Deschner <gd@samba.org> >Autobuild-Date(master): Fri Jun 28 12:52:03 UTC 2019 on sn-devel-184 > >(cherry picked from commit fee8cf326bfe240d3a8720569eab43f474349aff) >--- > source3/modules/vfs_glusterfs_fuse.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/source3/modules/vfs_glusterfs_fuse.c b/source3/modules/vfs_glusterfs_fuse.c >index d92f5e2b08b..51515aa0df4 100644 >--- a/source3/modules/vfs_glusterfs_fuse.c >+++ b/source3/modules/vfs_glusterfs_fuse.c >@@ -45,7 +45,7 @@ static int vfs_gluster_fuse_get_real_filename(struct vfs_handle_struct *handle, > ret = getxattr(path, key_buf, val_buf, GLUSTER_NAME_MAX + 1); > if (ret == -1) { > if (errno == ENOATTR) { >- errno = EOPNOTSUPP; >+ errno = ENOENT; > } > return -1; > } >-- >2.21.0 >
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:
obnox
:
review+
metze
:
review-
Actions:
View
Attachments on
bug 14010
:
15263
|
15264
| 15279