~ubuntu-branches/debian/jessie/gamin/jessie

« back to all changes in this revision

Viewing changes to doc/differences.html

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2007-03-23 14:43:49 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20070323144349-1inpdk22uaneks9h
Tags: 0.1.8-2
* debian/control: Improve long description. (Closes: #405347)
* debian/patches/14_nfs-fix.patch: Fix gam_server startup for Thunar.
  Thanks to Maximiliano Curia. (Closes: #403247)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="ISO-8859-1"?>
 
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
3
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><style type="text/css">
 
4
TD {font-family: Verdana,Arial,Helvetica}
 
5
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
 
6
H1 {font-family: Verdana,Arial,Helvetica}
 
7
H2 {font-family: Verdana,Arial,Helvetica}
 
8
H3 {font-family: Verdana,Arial,Helvetica}
 
9
A:link, A:visited, A:active { text-decoration: underline }
 
10
</style><title>Differences from FAM</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>Gamin the File Alteration Monitor</h1><h2>Differences from FAM</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="index.html">Home</a></li><li><a href="overview.html">Overview</a></li><li><a href="using.html">Using gamin</a></li><li><a href="config.html">Configuration</a></li><li><a href="news.html">News</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="python.html">Python bindings</a></li><li><a href="devel.html">Developers informations</a></li><li><a href="contacts.html">Contacts</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="debug.html">Debugging Gamin</a></li><li><a href="security.html">Security</a></li><li><a href="internals.html">Internals</a></li><li><a href="differences.html">Differences from FAM</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/gamin-list/">Mail archive</a></li><li><a href="http://oss.sgi.com/projects/fam/">FAM project</a></li><li><a href="sources/">sources</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=gamin">GNOME Bugzilla</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core">Red Hat Bugzilla</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h3>Differences</h3><p>gamin should be binary and source code compatible with FAM 2.6.8.
 
11
However there are some differences and at least one significant 
 
12
extension.</p><p>The differences are in term of implementation:</p><ul><li>No system wide server, instead it relies on per user server, if
 
13
needed started on demand by the fam/gamin library.</li>
 
14
<li>The functions FAMSuspendMonitor(), FAMResumeMonitor() and
 
15
    FAMMonitorCollection() are not implemented. They all raise problem
 
16
    of accumulating unbounded state on the server side and better handled
 
17
    at the client level if needed.</li>
 
18
<li>FAMErrno is provided, but the values may not match their FAM
 
19
counterparts, similary FamErrlist[] error messages are different.</li>
 
20
<li>No NFS support based on specific RPC and server, instead gamin monitors
 
21
only the state as reported locally by the kernel, not that locally done
 
22
changes on NFS or AFS filesystems are reported on Linux which is the
 
23
main criteria when having user home directories on such filesystems.</li>
 
24
</ul><h3>Extension(s)</h3><p>We tried to limit changes in gamin but a number of features were
 
25
deemed more important than sticking to the exact same set than FAM:</p><ul><li>Support for inotify on Linux if compiled in the kernel, this override
 
26
most of the deficiencies related to dnotify.</li>
 
27
<li>A lot of debugging support was added both for client and server
 
28
see the <a href="debug.html">specific page</a> on the matter.</li>
 
29
<li>The possibility to block Exist/EndExists callbacks when monitoring
 
30
directories based on a new API, see below</li>
 
31
</ul><p>FAM when monitoring a directory, immediately send a set of events
 
32
listing the files found in that directory, this ends up with an EndExists
 
33
events. However when monitoring hierarchy it's usually far more efficient
 
34
and simple to do the scanning on the client side and ignore those 
 
35
directory listing events from the FAM server (the only drawback is a potential
 
36
mismatch of the directory content between the FAM server and the client).
 
37
In such a case, all those events are not only superfluous but they are
 
38
also dangerous since they can lead to a congested pipe to the client
 
39
which is just scanning directories and not listening to FAM. To that
 
40
intent we added in gamin 0.0.23 a new API disabling the Exists/EndExists
 
41
sequences when watching directories for a given FAMConnection:</p><pre>int FAMNoExists(FAMConnection *fc)</pre><p>and with the Python bindings:</p><pre>WatchMonitor.no_exists()</pre><p>This feature is also used when the client reconnect to the server
 
42
after a connection loss or if the server died.</p><p>Calling it changes the protocol as described below, directory 
 
43
monitoring from that call will only get mutation events and not
 
44
the initial lists:</p><p><img src="callbacks.gif" alt="The NoExists behaviour change on callbacks" /></p><p><a href="contacts.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>