summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-11-21 17:28:02 +0100
committerJeremy Allison <jra@samba.org>2015-07-07 23:51:24 +0200
commit730b025d7bf8c951d55db60018c6ef85eae387a3 (patch)
tree2afe93e65e7611985217d64eb67b95b88df89601
parentce26c642724fb95d610c19d7f03e8c1e065219a2 (diff)
downloadsamba-730b025d7bf8c951d55db60018c6ef85eae387a3.tar.gz
smbd: Remove the notify_fam module
This has been moved to main smbd Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--docs-xml/Samba3-HOWTO/manpages.xml1
-rw-r--r--docs-xml/manpages/vfs_notify_fam.8.xml70
-rw-r--r--docs-xml/wscript_build1
-rw-r--r--source3/modules/vfs_notify_fam.c316
-rw-r--r--source3/modules/wscript_build7
5 files changed, 0 insertions, 395 deletions
diff --git a/docs-xml/Samba3-HOWTO/manpages.xml b/docs-xml/Samba3-HOWTO/manpages.xml
index 577ac8bab95..ad23f49704a 100644
--- a/docs-xml/Samba3-HOWTO/manpages.xml
+++ b/docs-xml/Samba3-HOWTO/manpages.xml
@@ -58,7 +58,6 @@
<xi:include href="../manpages/vfs_full_audit.8.xml"/>
<xi:include href="../manpages/vfs_gpfs.8.xml"/>
<xi:include href="../manpages/vfs_netatalk.8.xml"/>
- <xi:include href="../manpages/vfs_notify_fam.8.xml"/>
<xi:include href="../manpages/vfs_prealloc.8.xml"/>
<xi:include href="../manpages/vfs_readahead.8.xml"/>
<xi:include href="../manpages/vfs_readonly.8.xml"/>
diff --git a/docs-xml/manpages/vfs_notify_fam.8.xml b/docs-xml/manpages/vfs_notify_fam.8.xml
deleted file mode 100644
index 954aa374034..00000000000
--- a/docs-xml/manpages/vfs_notify_fam.8.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
-<refentry id="vfs_notify_fam.8">
-
-<refmeta>
- <refentrytitle>vfs_notify_fam</refentrytitle>
- <manvolnum>8</manvolnum>
- <refmiscinfo class="source">Samba</refmiscinfo>
- <refmiscinfo class="manual">System Administration tools</refmiscinfo>
- <refmiscinfo class="version">4.2</refmiscinfo>
-</refmeta>
-
-
-<refnamediv>
- <refname>vfs_notify_fam</refname>
- <refpurpose>FAM support for file change notifications</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
- <cmdsynopsis>
- <command>vfs objects = notify_fam</command>
- </cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
- <title>DESCRIPTION</title>
-
- <para>This VFS module is part of the
- <citerefentry><refentrytitle>samba</refentrytitle>
- <manvolnum>7</manvolnum></citerefentry> suite.</para>
-
- <para>The <command>vfs_notify_fam</command> module makes use of
- the system FAM (File Alteration Monitor) daemon to implement
- file change notifications for Windows clients. FAM is generally
- present only on IRIX and some BSD systems.</para>
-
- <para>This module is not stackable.</para>
-
-</refsect1>
-
-<refsect1>
- <title>EXAMPLES</title>
-
- <para>Support FAM notifications globally:</para>
-
-<programlisting>
- <smbconfsection name="[global]"/>
- <smbconfoption name="vfs objects">notify_fam</smbconfoption>
-</programlisting>
-
-</refsect1>
-
-<refsect1>
- <title>VERSION</title>
-
- <para>This man page is correct for version 3.0.25 of the Samba suite.
- </para>
-</refsect1>
-
-<refsect1>
- <title>AUTHOR</title>
-
- <para>The original Samba software and related utilities
- were created by Andrew Tridgell. Samba is now developed
- by the Samba Team as an Open Source project similar
- to the way the Linux kernel is developed.</para>
-
-</refsect1>
-
-</refentry>
diff --git a/docs-xml/wscript_build b/docs-xml/wscript_build
index f54ae15b8fb..5c42a31f4af 100644
--- a/docs-xml/wscript_build
+++ b/docs-xml/wscript_build
@@ -68,7 +68,6 @@ manpages='''
manpages/vfs_linux_xfs_sgid.8
manpages/vfs_media_harmony.8
manpages/vfs_netatalk.8
- manpages/vfs_notify_fam.8
manpages/vfs_prealloc.8
manpages/vfs_preopen.8
manpages/vfs_readahead.8
diff --git a/source3/modules/vfs_notify_fam.c b/source3/modules/vfs_notify_fam.c
deleted file mode 100644
index 51ada11d433..00000000000
--- a/source3/modules/vfs_notify_fam.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * FAM file notification support.
- *
- * Copyright (c) James Peach 2005
- * Copyright (c) Volker Lendecke 2007
- *
- * 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"
-#include "smbd/smbd.h"
-#include "librpc/gen_ndr/notify.h"
-
-#include <fam.h>
-
-#if !defined(HAVE_FAM_H_FAMCODES_TYPEDEF)
-/* Gamin provides this typedef which means we can't use 'enum FAMCodes' as per
- * every other FAM implementation. Phooey.
- */
-typedef enum FAMCodes FAMCodes;
-#endif
-
-/* NOTE: There are multiple versions of FAM floating around the net, each with
- * slight differences from the original SGI FAM implementation. In this file,
- * we rely only on the SGI features and do not assume any extensions. For
- * example, we do not look at FAMErrno, because it is not set by the original
- * implementation.
- *
- * Random FAM links:
- * http://oss.sgi.com/projects/fam/
- * http://savannah.nongnu.org/projects/fam/
- * http://sourceforge.net/projects/bsdfam/
- */
-
-/* ------------------------------------------------------------------------- */
-
-struct fam_watch_context {
- struct fam_watch_context *prev, *next;
- FAMConnection *fam_connection;
- struct FAMRequest fr;
- struct sys_notify_context *sys_ctx;
- void (*callback)(struct sys_notify_context *ctx,
- void *private_data,
- struct notify_event *ev);
- void *private_data;
- uint32_t mask; /* the inotify mask */
- uint32_t filter; /* the windows completion filter */
- const char *path;
-};
-
-
-/*
- * We want one FAM connection per smbd, not one per tcon.
- */
-static FAMConnection fam_connection;
-static bool fam_connection_initialized = False;
-
-static struct fam_watch_context *fam_notify_list;
-static void fam_handler(struct tevent_context *event_ctx,
- struct tevent_fd *fd_event,
- uint16_t flags,
- void *private_data);
-
-static NTSTATUS fam_open_connection(FAMConnection *fam_conn,
- struct tevent_context *event_ctx)
-{
- int res;
- char *name;
-
- 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)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) {
- DEBUG(10, ("FAM file change notifications not available\n"));
- /*
- * No idea how to get NT_STATUS from a FAM result
- */
- FAMCONNECTION_GETFD(fam_conn) = -1;
- return NT_STATUS_UNEXPECTED_IO_ERROR;
- }
-
- if (tevent_add_fd(event_ctx, event_ctx,
- FAMCONNECTION_GETFD(fam_conn),
- TEVENT_FD_READ, fam_handler,
- (void *)fam_conn) == NULL) {
- DEBUG(0, ("event_add_fd failed\n"));
- FAMClose(fam_conn);
- FAMCONNECTION_GETFD(fam_conn) = -1;
- return NT_STATUS_NO_MEMORY;
- }
-
- return NT_STATUS_OK;
-}
-
-static void fam_reopen(FAMConnection *fam_conn,
- struct tevent_context *event_ctx,
- struct fam_watch_context *notify_list)
-{
- struct fam_watch_context *ctx;
-
- DEBUG(5, ("Re-opening FAM connection\n"));
-
- FAMClose(fam_conn);
-
- if (!NT_STATUS_IS_OK(fam_open_connection(fam_conn, event_ctx))) {
- DEBUG(5, ("Re-opening fam connection failed\n"));
- return;
- }
-
- for (ctx = notify_list; ctx; ctx = ctx->next) {
- FAMMonitorDirectory(fam_conn, ctx->path, &ctx->fr, NULL);
- }
-}
-
-static void fam_handler(struct tevent_context *event_ctx,
- struct tevent_fd *fd_event,
- uint16_t flags,
- void *private_data)
-{
- FAMConnection *fam_conn = (FAMConnection *)private_data;
- FAMEvent fam_event;
- struct fam_watch_context *ctx;
- struct notify_event ne;
-
- if (FAMPending(fam_conn) == 0) {
- DEBUG(10, ("fam_handler called but nothing pending\n"));
- return;
- }
-
- if (FAMNextEvent(fam_conn, &fam_event) != 1) {
- DEBUG(5, ("FAMNextEvent returned an error\n"));
- TALLOC_FREE(fd_event);
- fam_reopen(fam_conn, event_ctx, fam_notify_list);
- return;
- }
-
- DEBUG(10, ("Got FAMCode %d for %s\n", fam_event.code,
- fam_event.filename));
-
- switch (fam_event.code) {
- case FAMChanged:
- ne.action = NOTIFY_ACTION_MODIFIED;
- break;
- case FAMCreated:
- ne.action = NOTIFY_ACTION_ADDED;
- break;
- case FAMDeleted:
- ne.action = NOTIFY_ACTION_REMOVED;
- break;
- default:
- DEBUG(10, ("Ignoring code FAMCode %d for file %s\n",
- (int)fam_event.code, fam_event.filename));
- return;
- }
-
- for (ctx = fam_notify_list; ctx; ctx = ctx->next) {
- if (memcmp(&fam_event.fr, &ctx->fr, sizeof(FAMRequest)) == 0) {
- break;
- }
- }
-
- if (ctx == NULL) {
- DEBUG(5, ("Discarding event for file %s\n",
- fam_event.filename));
- return;
- }
-
- if ((ne.path = strrchr_m(fam_event.filename, '\\')) == NULL) {
- ne.path = fam_event.filename;
- }
-
- ctx->callback(ctx->sys_ctx, ctx->private_data, &ne);
-}
-
-static int fam_watch_context_destructor(struct fam_watch_context *ctx)
-{
- if (FAMCONNECTION_GETFD(ctx->fam_connection) != -1) {
- FAMCancelMonitor(&fam_connection, &ctx->fr);
- }
- DLIST_REMOVE(fam_notify_list, ctx);
- return 0;
-}
-
-/*
- add a watch. The watch is removed when the caller calls
- talloc_free() on *handle
-*/
-static NTSTATUS fam_watch(vfs_handle_struct *vfs_handle,
- struct sys_notify_context *ctx,
- const char *path,
- uint32_t *filter,
- uint32_t *subdir_filter,
- void (*callback)(struct sys_notify_context *ctx,
- void *private_data,
- struct notify_event *ev),
- void *private_data,
- void *handle_p)
-{
- const uint32_t fam_mask = (FILE_NOTIFY_CHANGE_FILE_NAME|
- FILE_NOTIFY_CHANGE_DIR_NAME);
- struct fam_watch_context *watch;
- void **handle = (void **)handle_p;
-
- if ((*filter & fam_mask) == 0) {
- DEBUG(10, ("filter = %u, ignoring in FAM\n", *filter));
- return NT_STATUS_OK;
- }
-
- if (!fam_connection_initialized) {
- if (!NT_STATUS_IS_OK(fam_open_connection(&fam_connection,
- ctx->ev))) {
- /*
- * Just let smbd do all the work itself
- */
- return NT_STATUS_OK;
- }
- fam_connection_initialized = True;
- }
-
- if (!(watch = talloc(ctx, struct fam_watch_context))) {
- return NT_STATUS_NO_MEMORY;
- }
-
- watch->fam_connection = &fam_connection;
-
- watch->callback = callback;
- watch->private_data = private_data;
- watch->sys_ctx = ctx;
-
- watch->path = talloc_strdup(watch, path);
- if (watch->path == NULL) {
- DEBUG(0, ("talloc_asprintf failed\n"));
- TALLOC_FREE(watch);
- return NT_STATUS_NO_MEMORY;
- }
-
- /*
- * The FAM module in this early state will only take care of
- * FAMCreated and FAMDeleted events, Leave the rest to
- * notify_internal.c
- */
-
- watch->filter = fam_mask;
- *filter &= ~fam_mask;
-
- DLIST_ADD(fam_notify_list, watch);
- talloc_set_destructor(watch, fam_watch_context_destructor);
-
- /*
- * Only directories monitored so far
- */
-
- if (FAMCONNECTION_GETFD(watch->fam_connection) != -1) {
- FAMMonitorDirectory(watch->fam_connection, watch->path,
- &watch->fr, NULL);
- }
- else {
- /*
- * If the re-open is successful, this will establish the
- * FAMMonitor from the list
- */
- fam_reopen(watch->fam_connection, ctx->ev, fam_notify_list);
- }
-
- *handle = (void *)watch;
-
- return NT_STATUS_OK;
-}
-
-/* VFS operations structure */
-
-static struct vfs_fn_pointers notify_fam_fns = {
- .notify_watch_fn = fam_watch,
-};
-
-
-NTSTATUS vfs_notify_fam_init(void);
-NTSTATUS vfs_notify_fam_init(void)
-{
- return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "notify_fam",
- &notify_fam_fns);
-}
diff --git a/source3/modules/wscript_build b/source3/modules/wscript_build
index 30f3bdd9ea1..d05e58bad50 100644
--- a/source3/modules/wscript_build
+++ b/source3/modules/wscript_build
@@ -284,13 +284,6 @@ bld.SAMBA3_MODULE('vfs_gpfs',
vfs_notify_fam_deps='samba-util '
if bld.CONFIG_SET('SAMBA_FAM_LIBS'):
vfs_notify_fam_deps += bld.CONFIG_GET('SAMBA_FAM_LIBS')
-bld.SAMBA3_MODULE('vfs_notify_fam',
- subsystem='vfs',
- source='vfs_notify_fam.c',
- deps=vfs_notify_fam_deps,
- init_function='',
- internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_notify_fam'),
- enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_notify_fam'))
bld.SAMBA3_MODULE('vfs_readahead',
subsystem='vfs',