Byte Range locking is implemented for both Windows and UNIX access with UNIX advisory byte range locking via the fcntl function. Since UNIX 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
Opportunistic (Oplocks) locking should be disabled for any share that has mixed Windows and UNIX 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
Mandatory, Byte Range, and Opportunistic locking are all enabled by default. Disable oplocks for
[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
[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/
5See Appendix B.5
21