summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/docbook/projdoc/UNIX_INSTALL.sgml35
1 files changed, 20 insertions, 15 deletions
diff --git a/docs/docbook/projdoc/UNIX_INSTALL.sgml b/docs/docbook/projdoc/UNIX_INSTALL.sgml
index 41eb7a478c..0e4d8a5d03 100644
--- a/docs/docbook/projdoc/UNIX_INSTALL.sgml
+++ b/docs/docbook/projdoc/UNIX_INSTALL.sgml
@@ -379,21 +379,26 @@
The second is the "deny modes" that are specified when a file
is open.</para>
- <para>Samba supports "record locking" using the fcntl() unix system
- call. This is often implemented using rpc calls to a rpc.lockd process
- running on the system that owns the filesystem. Unfortunately many
- rpc.lockd implementations are very buggy, particularly when made to
- talk to versions from other vendors. It is not uncommon for the
- rpc.lockd to crash.</para>
-
- <para>There is also a problem translating the 32 bit lock
- requests generated by PC clients to 31 bit requests supported
- by most unixes. Unfortunately many PC applications (typically
- OLE2 applications) use byte ranges with the top bit set
- as semaphore sets. Samba attempts translation to support
- these types of applications, and the translation has proved
- to be quite successful.</para>
-
+ <para>Record locking semantics under Unix is very
+ different from record locking under Windows. Versions
+ of Samba before 2.2 have tried to use the native
+ fcntl() unix system call to implement proper record
+ locking between different Samba clients. This can not
+ be fully correct due to several reasons. The simplest
+ is the fact that a Windows client is allowed to lock a
+ byte range up to 2^32 or 2^64, depending on the client
+ OS. The unix locking only supports byte ranges up to
+ 2^31. So it is not possible to correctly satisfy a
+ lock request above 2^31. There are many more
+ differences, too many to be listed here.</para>
+
+ <para>Samba 2.2 and above implements record locking
+ completely independent of the underlying unix
+ system. If a byte range lock that the client requests
+ happens to fall into the range 0-2^31, Samba hands
+ this request down to the Unix system. All other locks
+ can not be seen by unix anyway.</para>
+
<para>Strictly a SMB server should check for locks before
every read and write call on a file. Unfortunately with the
way fcntl() works this can be slow and may overstress the