How to prevent samba from holding a file lock after a client disconnects?
- by Jean-Francois Chevrette
Here I have a Samba server (Debian 5.0) thats is configured to host Windows XP profiles.
Clients connects to this server and work on their profiles directly on the samba share (the profile is not copied locally).
Every now and then, a client may not shutdown properly and thus Windows does not free the file locks. When looking at the samba locking table, we can see that many files are still locked even though the client is not connected anymore. In our case, this seems to occur with lockfiles created by Mozilla Thunderbird and Firefox. Here's an example of the samba locking table:
# smbstatus -L | grep DENY_ALL | head -n5
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
15494 10345 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user1 app.profile/user1.thunderbird/parent.lock Mon Nov 22 07:12:45 2010
18040 10454 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user2 app.profile/user2.thunderbird/parent.lock Mon Nov 22 11:20:45 2010
26466 10056 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user3 app.profile/user3.firefox/parent.lock Mon Nov 22 08:48:23 2010
We can see that the files were opened by Windows and imposed a DENY_ALL lock.
Now when a client reconnects to this share and tries to open those files, samba says that they are locked and denies access.
Is there any way to work around this situation or am I missing something?
Edit: We would like to avoid disabling file locks on the samba server because there are good reasons to have those enabled.