[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Sun Apr 18 07:13:24 MDT 2010


The branch, master has been updated
       via  e1ca451... s3: Improved support for GAMIN.
      from  69ce298... build: more dependencies on /usr/bin/perl -> ${PERL}

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


- Log -----------------------------------------------------------------
commit e1ca45179419f96b831cc929ff46df39a4766388
Author: Ira Cooper <samba at ira.wakeful.net>
Date:   Sun Apr 18 15:02:23 2010 +0200

    s3: Improved support for GAMIN.
    
    Support the FAMNoExists API for gamin to reduce cpu use and problems when
    using GAMIN as FAM for vfs_notify_fam.

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

Summary of changes:
 source3/configure.in             |   16 +++++++++++-----
 source3/modules/vfs_notify_fam.c |   15 +++++++++++++++
 2 files changed, 26 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/configure.in b/source3/configure.in
index 26ec10b..9a190cc 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2644,18 +2644,19 @@ if test x$enable_fam != xno; then
         # On IRIX, libfam requires libC, but other FAM implementations
 	# might not need it.
         AC_CHECK_LIB(fam, FAMOpen2,
-            [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
-            [samba_cv_HAVE_LIBFAM=no])
+	    [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam";
+	    AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
+	    [samba_cv_HAVE_LIBFAM=no])
 
         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
             samba_fam_xtra=-lC
             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
-                [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
-                [samba_cv_HAVE_LIBFAM=no])
+		[samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC";
+		AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is support for FAMOpen2)],
+		[samba_cv_HAVE_LIBFAM=no])
             unset samba_fam_xtra
         fi
     fi
-
     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
         default_shared_modules="$default_shared_modules vfs_notify_fam"
         AC_TRY_COMPILE([#include <fam.h>],
@@ -2665,6 +2666,11 @@ if test x$enable_fam != xno; then
                     [])
     fi
 
+    if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
+	AC_CHECK_LIB(fam, FAMNoExists,
+	    [AC_DEFINE(HAVE_FAMNOEXISTS, 1, Define to 1 if there is support for FAMNoExists)])
+    fi
+
     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
         AC_MSG_ERROR(FAM support requested but FAM library not available )
     fi
diff --git a/source3/modules/vfs_notify_fam.c b/source3/modules/vfs_notify_fam.c
index 8f00c92..652e785 100644
--- a/source3/modules/vfs_notify_fam.c
+++ b/source3/modules/vfs_notify_fam.c
@@ -79,12 +79,27 @@ static NTSTATUS fam_open_connection(FAMConnection *fam_conn,
 	ZERO_STRUCTP(fam_conn);
 	FAMCONNECTION_GETFD(fam_conn) = -1;
 
+
+#ifdef HAVE_FAMNOEXISTS
+	/* We should honor outside setting of the GAM_CLIENT_ID. */
+	setenv("GAM_CLIENT_ID","SAMBA",0);
+#endif
+
 	if (asprintf(&name, "smbd (%lu)", (unsigned long)sys_getpid()) == -1) {
 		DEBUG(0, ("No memory\n"));
 		return NT_STATUS_NO_MEMORY;
 	}
 
 	res = FAMOpen2(fam_conn, name);
+
+#ifdef HAVE_FAMNOEXISTS
+	/*
+	 * This reduces the chatter between GAMIN and samba making the pair
+	 * much more reliable.
+	 */
+	FAMNoExists(fam_conn);
+#endif
+
 	SAFE_FREE(name);
 
 	if (res < 0) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list