[SCM] Samba Shared Repository - branch master updated - 7e5bbe806958ea8176e4c8494e3b3f79570635da

Jelmer Vernooij jelmer at samba.org
Tue Oct 14 00:19:37 GMT 2008


The branch, master has been updated
       via  7e5bbe806958ea8176e4c8494e3b3f79570635da (commit)
       via  fd443f819e77ee811cbcd0eaea4073f5e7a8f145 (commit)
      from  551e95502765bae58d5ccf57635e4977b7b47b9b (commit)

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


- Log -----------------------------------------------------------------
commit 7e5bbe806958ea8176e4c8494e3b3f79570635da
Merge: fd443f819e77ee811cbcd0eaea4073f5e7a8f145 551e95502765bae58d5ccf57635e4977b7b47b9b
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Tue Oct 14 02:19:00 2008 +0200

    Merge branch 'master' of git://git.samba.org/samba

commit fd443f819e77ee811cbcd0eaea4073f5e7a8f145
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Tue Oct 14 02:16:27 2008 +0200

    Use common fusage implementation.

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

Summary of changes:
 lib/util/fsusage.c    |   13 +++-
 source3/Makefile.in   |    2 +-
 source3/lib/fsusage.c |  157 -------------------------------------------------
 3 files changed, 10 insertions(+), 162 deletions(-)
 delete mode 100644 source3/lib/fsusage.c


Changeset truncated at 500 lines:

diff --git a/lib/util/fsusage.c b/lib/util/fsusage.c
index 30f9f9c..e5f2678 100644
--- a/lib/util/fsusage.c
+++ b/lib/util/fsusage.c
@@ -19,7 +19,7 @@
 
 #include "includes.h"
 #include "system/filesys.h"
-
+ 
 /**
  * @file
  * @brief Utility functions for getting the amount of free disk space
@@ -30,12 +30,17 @@
 */
 static uint64_t adjust_blocks(uint64_t blocks, uint64_t fromsize, uint64_t tosize)
 {
-	if (fromsize == tosize)	/* e.g., from 512 to 512 */
+	if (fromsize == tosize)	{ /* e.g., from 512 to 512 */
 		return blocks;
-	else if (fromsize > tosize)	/* e.g., from 2048 to 512 */
+	} else if (fromsize > tosize) { /* e.g., from 2048 to 512 */
 		return blocks * (fromsize / tosize);
-	else				/* e.g., from 256 to 512 */
+	} else { /* e.g., from 256 to 512 */
+		/* Protect against broken filesystems... */
+		if (fromsize == 0) {
+			fromsize = tosize;
+		}
 		return (blocks + 1) / (tosize / fromsize);
+	}
 }
 
 /**
diff --git a/source3/Makefile.in b/source3/Makefile.in
index cc9efb3..bd29792 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -329,7 +329,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) \
 	  lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_uuid.o \
 	  lib/util_unistr.o ../lib/util/util_file.o lib/util_file.o ../lib/util/data_blob.o \
 	  lib/util.o lib/util_sock.o lib/sock_exec.o lib/util_sec.o \
-	  lib/substitute.o lib/fsusage.o lib/dbwrap_util.o \
+	  lib/substitute.o ../lib/util/fsusage.o lib/dbwrap_util.o \
 	  lib/ms_fnmatch.o lib/select.o lib/errmap_unix.o \
 	  lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \
 	  ../lib/crypto/md5.o ../lib/crypto/hmacmd5.o ../lib/crypto/arcfour.o \
diff --git a/source3/lib/fsusage.c b/source3/lib/fsusage.c
deleted file mode 100644
index 43eb847..0000000
--- a/source3/lib/fsusage.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   functions to calculate the free disk space
-   Copyright (C) Andrew Tridgell 1998-2000
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-
-
-/* Return the number of TOSIZE-byte blocks used by
-   BLOCKS FROMSIZE-byte blocks, rounding away from zero.
-*/
-static uint64_t adjust_blocks(uint64_t blocks, uint64_t fromsize, uint64_t tosize)
-{
-	if (fromsize == tosize)	{ /* e.g., from 512 to 512 */
-		return blocks;
-	} else if (fromsize > tosize) { /* e.g., from 2048 to 512 */
-		return blocks * (fromsize / tosize);
-	} else { /* e.g., from 256 to 512 */
-		/* Protect against broken filesystems... */
-		if (fromsize == 0) {
-			fromsize = tosize;
-		}
-		return (blocks + 1) / (tosize / fromsize);
-	}
-}
-
-/* this does all of the system specific guff to get the free disk space.
-   It is derived from code in the GNU fileutils package, but has been
-   considerably mangled for use here 
-
-   results are returned in *dfree and *dsize, in 512 byte units
-*/
-int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize)
-{
-#ifdef STAT_STATFS3_OSF1
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_fsize, (uint64_t)512)
-	struct statfs fsd;
-
-	if (statfs (path, &fsd, sizeof (struct statfs)) != 0)
-		return -1;
-#endif /* STAT_STATFS3_OSF1 */
-	
-#ifdef STAT_STATFS2_FS_DATA	/* Ultrix */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)1024, (uint64_t)512)	
-	struct fs_data fsd;
-	
-	if (statfs (path, &fsd) != 1)
-		return -1;
-	
-	(*dsize) = CONVERT_BLOCKS (fsd.fd_req.btot);
-	(*dfree) = CONVERT_BLOCKS (fsd.fd_req.bfreen);
-#endif /* STAT_STATFS2_FS_DATA */
-	
-#ifdef STAT_STATFS2_BSIZE	/* 4.3BSD, SunOS 4, HP-UX, AIX */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-	struct statfs fsd;
-	
-	if (statfs (path, &fsd) < 0)
-		return -1;
-	
-#ifdef STATFS_TRUNCATES_BLOCK_COUNTS
-	/* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
-	   struct statfs are truncated to 2GB.  These conditions detect that
-	   truncation, presumably without botching the 4.1.1 case, in which
-	   the values are not truncated.  The correct counts are stored in
-	   undocumented spare fields.  */
-	if (fsd.f_blocks == 0x1fffff && fsd.f_spare[0] > 0) {
-		fsd.f_blocks = fsd.f_spare[0];
-		fsd.f_bfree = fsd.f_spare[1];
-		fsd.f_bavail = fsd.f_spare[2];
-	}
-#endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
-#endif /* STAT_STATFS2_BSIZE */
-	
-
-#ifdef STAT_STATFS2_FSIZE	/* 4.4BSD */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_fsize, (uint64_t)512)
-	
-	struct statfs fsd;
-	
-	if (statfs (path, &fsd) < 0)
-		return -1;
-#endif /* STAT_STATFS2_FSIZE */
-	
-#ifdef STAT_STATFS4		/* SVR3, Dynix, Irix, AIX */
-# if _AIX || defined(_CRAY)
-#  define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-#  ifdef _CRAY
-#   define f_bavail f_bfree
-#  endif
-# else
-#  define CONVERT_BLOCKS(B) ((uint64_t)B)
-#  ifndef _SEQUENT_		/* _SEQUENT_ is DYNIX/ptx */
-#   ifndef DOLPHIN		/* DOLPHIN 3.8.alfa/7.18 has f_bavail */
-#    define f_bavail f_bfree
-#   endif
-#  endif
-# endif
-	
-	struct statfs fsd;
-
-	if (statfs (path, &fsd, sizeof fsd, 0) < 0)
-		return -1;
-	/* Empirically, the block counts on most SVR3 and SVR3-derived
-	   systems seem to always be in terms of 512-byte blocks,
-	   no matter what value f_bsize has.  */
-
-#endif /* STAT_STATFS4 */
-
-#if defined(STAT_STATVFS) || defined(STAT_STATVFS64)		/* SVR4 */
-#if defined HAVE_FRSIZE
-# define CONVERT_BLOCKS(B) \
-	adjust_blocks ((uint64_t)(B), fsd.f_frsize ? (uint64_t)fsd.f_frsize : (uint64_t)fsd.f_bsize, (uint64_t)512)
-#else
-# define CONVERT_BLOCKS(B) \
-	adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-#endif
-
-#ifdef STAT_STATVFS64
-	struct statvfs64 fsd;
-	if (statvfs64(path, &fsd) < 0) return -1;
-#else
-	struct statvfs fsd;
-	if (statvfs(path, &fsd) < 0) return -1;
-#endif
-
-	/* f_frsize isn't guaranteed to be supported.  */
-
-#endif /* STAT_STATVFS */
-
-#ifndef CONVERT_BLOCKS
-	/* we don't have any dfree code! */
-	return -1;
-#else
-#if !defined(STAT_STATFS2_FS_DATA)
-	/* !Ultrix */
-	(*dsize) = CONVERT_BLOCKS (fsd.f_blocks);
-	(*dfree) = CONVERT_BLOCKS (fsd.f_bavail);
-#endif /* not STAT_STATFS2_FS_DATA */
-#endif
-
-	return 0;
-}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list