Patch #2 for GAMIN Integration.

Ira Cooper samba at ira.wakeful.net
Thu Apr 15 04:45:06 MDT 2010


This includes the actual code for GAMIN, and should be all set to go.

Thanks,

-Ira

commit e3f7aa8c66fa1aff5b61a64dddfc76b14dff436a
Author: Ira Cooper <samba at ira.wakeful.net>
Date:   Thu Apr 15 06:38:31 2010 -0400

   Revert "Revert "Add support for FAMNoExists to vfs_notify_fam.""

   This reverts commit f909d615001470ca65ea4e3f78028e196214b904.

diff --git a/source3/configure.in b/source3/configure.in
index a9b9e47..4e6e5d2 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2589,18 +2589,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=yes; SMB_FAM_LIBS="-lfam";
+            AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is
support for FAMOp
            [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=yes; SMB_FAM_LIBS="-lfam -lC";
+               AC_DEFINE(HAVE_FAMOPEN2, 1, Define to 1 if there is
support for FA
                [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>],
@@ -2610,6 +2611,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 F
+    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..6f5d005 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) {


More information about the samba-technical mailing list