[SCM] Samba Shared Repository - branch master updated

Björn Jacke bjacke at samba.org
Tue Dec 8 13:14:32 MST 2009


The branch, master has been updated
       via  0d53ce7... s3: make sys_posix_fallocate more generic
      from  e14fb8f... s3-spoolss: use SPOOLSS_ARCHITECTURE_ALL in driver enum server code.

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


- Log -----------------------------------------------------------------
commit 0d53ce7e072d3dc5208fd752c5d49ed313d1c752
Author: Björn Jacke <bj at sernet.de>
Date:   Tue Dec 8 21:13:19 2009 +0100

    s3: make sys_posix_fallocate more generic
    
    this is in preparation for other preallocation methods to be introduced.

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

Summary of changes:
 source3/lib/system.c          |    8 ++++----
 source3/modules/vfs_default.c |   25 +++++++++++--------------
 2 files changed, 15 insertions(+), 18 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/system.c b/source3/lib/system.c
index a2dd899..a58d903 100644
--- a/source3/lib/system.c
+++ b/source3/lib/system.c
@@ -621,16 +621,16 @@ int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf,
 /*******************************************************************
  An posix_fallocate() wrapper that will deal with 64 bit filesizes.
 ********************************************************************/
-#if (defined(HAVE_POSIX_FALLOCATE64) || defined(HAVE_POSIX_FALLOCATE)) && !defined(HAVE_BROKEN_POSIX_FALLOCATE)
 int sys_posix_fallocate(int fd, SMB_OFF_T offset, SMB_OFF_T len)
 {
-#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_POSIX_FALLOCATE64)
+#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_POSIX_FALLOCATE64) && !defined(HAVE_BROKEN_POSIX_FALLOCATE)
 	return posix_fallocate64(fd, offset, len);
-#else
+#elif defined(HAVE_POSIX_FALLOCATE) && !defined(HAVE_BROKEN_POSIX_FALLOCATE)
 	return posix_fallocate(fd, offset, len);
+#else
+	return ENOSYS;
 #endif
 }
-#endif
 
 /*******************************************************************
  An ftruncate() wrapper that will deal with 64 bit filesizes.
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 9b842df..ded4b1a 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -917,6 +917,7 @@ static int strict_allocate_ftruncate(vfs_handle_struct *handle, files_struct *fs
 	SMB_OFF_T space_to_write;
 	uint64_t space_avail;
 	uint64_t bsize,dfree,dsize;
+	int ret;
 
 	if (currpos == -1)
 		return -1;
@@ -943,21 +944,17 @@ static int strict_allocate_ftruncate(vfs_handle_struct *handle, files_struct *fs
 	   emulation is being done by the libc (like on AIX with JFS1). In that
 	   case we do our own emulation. posix_fallocate implementations can
 	   return ENOTSUP or EINVAL in cases like that. */
-#if defined(HAVE_POSIX_FALLOCATE)
-	{
-		int ret = sys_posix_fallocate(fsp->fh->fd, st.st_ex_size, space_to_write);
-		if (ret == ENOSPC) {
-			errno = ENOSPC;
-			return -1;
-		}
-		if (ret == 0) {
-			return 0;
-		}
-		DEBUG(10,("strict_allocate_ftruncate: sys_posix_fallocate "
-			"failed with error %d. "
-			"Falling back to slow manual allocation\n", ret));
+	ret = sys_posix_fallocate(fsp->fh->fd, st.st_ex_size, space_to_write);
+	if (ret == ENOSPC) {
+		errno = ENOSPC;
+		return -1;
 	}
-#endif
+	if (ret == 0) {
+		return 0;
+	}
+	DEBUG(10,("strict_allocate_ftruncate: sys_posix_fallocate failed with "
+		"error %d. Falling back to slow manual allocation\n", ret));
+
 	/* available disk space is enough or not? */
 	space_avail = get_dfree_info(fsp->conn,
 				     fsp->fsp_name->base_name, false,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list