[SCM] Samba Shared Repository - branch master updated

Ralph Böhme slow at samba.org
Wed May 2 20:21:02 UTC 2018


The branch, master has been updated
       via  0c78aa1 s3: VFS: Default. Move vfs_read_data() out of source3/smbd/vfs.c to the printing code, which is the only caller.
       via  c68cfbc s3: VFS: default: Remove recursion into the VFS inside the default pread call.
       via  ff3a23e s3: VFS: default: Remove fallback if we don't have HAVE_PREAD set. Samba doesn't work without pread.
      from  bc71cd0 s3: VFS: Remove fsync_fn() from the VFS and all modules. VFS ABI change.

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


- Log -----------------------------------------------------------------
commit 0c78aa1f3a6eb9c08c2fdd10c304d6192cb1b6c2
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Apr 30 10:15:49 2018 -0700

    s3: VFS: Default. Move vfs_read_data() out of source3/smbd/vfs.c to the printing code, which is the only caller.
    
    Make static.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>
    
    Autobuild-User(master): Ralph Böhme <slow at samba.org>
    Autobuild-Date(master): Wed May  2 22:20:23 CEST 2018 on sn-devel-144

commit c68cfbcee6a19a19401893706d72994725b05ef5
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Apr 30 09:51:34 2018 -0700

    s3: VFS: default: Remove recursion into the VFS inside the default pread call.
    
    We already know we're at the POSIX level here.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit ff3a23e90f85508de39610eb3503562b76c22773
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Apr 30 09:50:04 2018 -0700

    s3: VFS: default: Remove fallback if we don't have HAVE_PREAD set. Samba doesn't work without pread.
    
    Start of the changes to remove synchronous VFS read.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

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

Summary of changes:
 source3/modules/vfs_default.c  | 26 +++-----------------------
 source3/printing/nt_printing.c | 28 ++++++++++++++++++++++++++++
 source3/smbd/proto.h           |  1 -
 source3/smbd/vfs.c             | 25 -------------------------
 4 files changed, 31 insertions(+), 49 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 6de0329..56dd5c7 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -636,33 +636,13 @@ static ssize_t vfswrap_pread(vfs_handle_struct *handle, files_struct *fsp, void
 
 	if (result == -1 && errno == ESPIPE) {
 		/* Maintain the fiction that pipes can be seeked (sought?) on. */
-		result = SMB_VFS_READ(fsp, data, n);
+		result = sys_read(fsp->fh->fd, data, n);
 		fsp->fh->pos = 0;
 	}
 
 #else /* HAVE_PREAD */
-	off_t   curr;
-	int lerrno;
-
-	curr = SMB_VFS_LSEEK(fsp, 0, SEEK_CUR);
-	if (curr == -1 && errno == ESPIPE) {
-		/* Maintain the fiction that pipes can be seeked (sought?) on. */
-		result = SMB_VFS_READ(fsp, data, n);
-		fsp->fh->pos = 0;
-		return result;
-	}
-
-	if (SMB_VFS_LSEEK(fsp, offset, SEEK_SET) == -1) {
-		return -1;
-	}
-
-	errno = 0;
-	result = SMB_VFS_READ(fsp, data, n);
-	lerrno = errno;
-
-	SMB_VFS_LSEEK(fsp, curr, SEEK_SET);
-	errno = lerrno;
-
+	errno = ENOSYS;
+	result = -1;
 #endif /* HAVE_PREAD */
 
 	return result;
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 54357b7..bf54fd4 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -312,6 +312,34 @@ const char *get_short_archi(const char *long_archi)
 }
 
 /****************************************************************************
+ Read data from fsp on the vfs.
+ (note: EINTR re-read differs from vfs_write_data)
+****************************************************************************/
+
+static ssize_t vfs_read_data(files_struct *fsp, char *buf, size_t byte_count)
+{
+	size_t total=0;
+
+	while (total < byte_count) {
+		ssize_t ret = SMB_VFS_READ(fsp, buf + total,
+					byte_count - total);
+
+		if (ret == 0) {
+			return total;
+		}
+		if (ret == -1) {
+			if (errno == EINTR) {
+				continue;
+			} else {
+				return -1;
+			}
+		}
+		total += ret;
+	}
+	return (ssize_t)total;
+}
+
+/****************************************************************************
  Version information in Microsoft files is held in a VS_VERSION_INFO structure.
  There are two case to be covered here: PE (Portable Executable) and NE (New
  Executable) files. Both files support the same INFO structure, but PE files
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 4417595..8135046 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -1228,7 +1228,6 @@ void sys_utmp_yield(const char *username, const char *hostname,
 bool vfs_init_custom(connection_struct *conn, const char *vfs_object);
 bool smbd_vfs_init(connection_struct *conn);
 NTSTATUS vfs_file_exist(connection_struct *conn, struct smb_filename *smb_fname);
-ssize_t vfs_read_data(files_struct *fsp, char *buf, size_t byte_count);
 ssize_t vfs_write_data(struct smb_request *req,
 			files_struct *fsp,
 			const char *buffer,
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index f659c8f..47abf45 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -399,31 +399,6 @@ NTSTATUS vfs_file_exist(connection_struct *conn, struct smb_filename *smb_fname)
 }
 
 /****************************************************************************
- Read data from fsp on the vfs. (note: EINTR re-read differs from vfs_write_data)
-****************************************************************************/
-
-ssize_t vfs_read_data(files_struct *fsp, char *buf, size_t byte_count)
-{
-	size_t total=0;
-
-	while (total < byte_count)
-	{
-		ssize_t ret = SMB_VFS_READ(fsp, buf + total,
-					   byte_count - total);
-
-		if (ret == 0) return total;
-		if (ret == -1) {
-			if (errno == EINTR)
-				continue;
-			else
-				return -1;
-		}
-		total += ret;
-	}
-	return (ssize_t)total;
-}
-
-/****************************************************************************
  Write data to a fd on the vfs.
 ****************************************************************************/
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list