[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Wed Aug 7 14:21:01 UTC 2024


The branch, master has been updated
       via  aa043a5808b vfs_ceph_new: handle errno properly for 'readdir'
       via  a7f4e2bd47c vfs_ceph{_new}: do not set errno upon successful call to libcephfs
      from  c0d0767a3ab script/autobuild.py: do some basic testing using --without-winbind

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit aa043a5808b73fc272de585c1446372fa3f21d08
Author: Shachar Sharon <ssharon at redhat.com>
Date:   Tue Jul 30 17:36:09 2024 +0300

    vfs_ceph_new: handle errno properly for 'readdir'
    
    Take special care for readdir errno setting: in case of error, update
    errno by libcephfs (and protect from possible over-write by debug
    logging); in the case of successful result or end-of-stream restore
    errno to its previous value before calling the readdir_fn VFS hook.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15686
    
    Signed-off-by: Shachar Sharon <ssharon at redhat.com>
    Reviewed-by: Guenther Deschner <gd at samba.org>
    Reviewed-by: Anoop C S <anoopcs at samba.org>
    
    Autobuild-User(master): Günther Deschner <gd at samba.org>
    Autobuild-Date(master): Wed Aug  7 14:20:02 UTC 2024 on atb-devel-224

commit a7f4e2bd47c7f4728f3ac8d90af693156a69c557
Author: Shachar Sharon <ssharon at redhat.com>
Date:   Tue Jul 30 09:55:44 2024 +0300

    vfs_ceph{_new}: do not set errno upon successful call to libcephfs
    
    There is code in Samba that expects errno from a previous system call
    to be preserved through a subsequent system call. Thus, avoid setting
    "errno = 0" in status_code() and lstatus_code() upon successful return
    from libcephfs API call.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15686
    
    Signed-off-by: Shachar Sharon <ssharon at redhat.com>
    Reviewed-by: Guenther Deschner <gd at samba.org>
    Reviewed-by: Anoop C S <anoopcs at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/modules/vfs_ceph.c     |  2 --
 source3/modules/vfs_ceph_new.c | 15 +++++++--------
 2 files changed, 7 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index 1dd136e569b..fd450af16c2 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -66,7 +66,6 @@ static inline int status_code(int ret)
 		errno = -ret;
 		return -1;
 	}
-	errno = 0;
 	return ret;
 }
 
@@ -76,7 +75,6 @@ static inline ssize_t lstatus_code(intmax_t ret)
 		errno = -((int)ret);
 		return -1;
 	}
-	errno = 0;
 	return (ssize_t)ret;
 }
 
diff --git a/source3/modules/vfs_ceph_new.c b/source3/modules/vfs_ceph_new.c
index 99d4a1fe407..cf7e6b121db 100644
--- a/source3/modules/vfs_ceph_new.c
+++ b/source3/modules/vfs_ceph_new.c
@@ -66,7 +66,6 @@ static int status_code(int ret)
 		errno = -ret;
 		return -1;
 	}
-	errno = 0;
 	return ret;
 }
 
@@ -76,7 +75,6 @@ static ssize_t lstatus_code(intmax_t ret)
 		errno = -((int)ret);
 		return -1;
 	}
-	errno = 0;
 	return (ssize_t)ret;
 }
 
@@ -1484,19 +1482,20 @@ static struct dirent *vfs_ceph_readdir(struct vfs_handle_struct *handle,
 {
 	const struct vfs_ceph_fh *dircfh = (const struct vfs_ceph_fh *)dirp;
 	struct dirent *result = NULL;
-	int errval = 0;
+	int saved_errno = errno;
 
 	DBG_DEBUG("[CEPH] readdir(%p, %p)\n", handle, dirp);
+
 	errno = 0;
 	result = vfs_ceph_ll_readdir(handle, dircfh);
-	errval = errno;
-	if ((result == NULL) && (errval != 0)) {
-		DBG_DEBUG("[CEPH] readdir(...) = %d\n", errval);
+	if ((result == NULL) && (errno != 0)) {
+		saved_errno = errno;
+		DBG_DEBUG("[CEPH] readdir(...) = %d\n", errno);
 	} else {
 		DBG_DEBUG("[CEPH] readdir(...) = %p\n", result);
 	}
-	/* re-assign errno to avoid possible over-write by DBG_DEBUG */
-	errno = errval;
+
+	errno = saved_errno;
 	return result;
 }
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list