HP CIFS File Locking Interoperation

25
(mixed-mode access) does not remove the element of risk from data corruption
because the locking interoperability is not comprehensive system-wide
7
.
Byte Range locking is implemented for both Windows and UNIX/NFS access with UNIX
advisory byte range locking via the fcntl function. Since UNIX/NFS byte range locking is
advisory, a UNIX process must be properly coded to participate in the locking protocol. The
CIFS/9000 smbd process actually calls the UNIX fcntl function to implement Windows byte
range locking. When both processes correctly interact, byte range locking is fully effective in
a mixed Windows-UNIX/NFS access environment. Byte range locking should remain
enabled.
Opportunistic (Oplocks) locking should be disabled for any share that has mixed Windows
and UNIX/NFS client access. A UNIX process has no concept of an oplock, therefore cannot
send an oplock break when a Windows client has cached a copy of a file. A UNIX process
could open and write to a disk file that has been modified in the Windows client cache, which
results in an unacceptable risk of data corruption. Oplocks should be disabled in a mixed
Windows-UNIX/NFS access environment.
Mandatory, Byte Range, and Opportunistic locking are all enabled by default. Disable
oplocks for Windows-UNIX share file access explicitly on a per -share basis by editing the
smb.conf file:
[share_name]
share modes = yes <default config shown for example only>
locking = yes <default config shown for example only>
oplocks = no
veto oplocks can be used to specify particular files on a share that will encounter mixed
Windows and UNIX access, and prevent the CIFS/9000 server from granting oplock requests
upon those files. By enabling veto oplocks for mixed-mode shared access, Windows clients
can continue to utilize oplocks for Windows-only shared access and gain the performance
benefit of file caching.
[share_name]
share modes = yes <default config shown for example only>
locking = yes <default config shown for example only>
oplocks = yes
veto oplock files = /filename.ext/
7
See Appendix B.5