diff options
author | Jeremy Allison <jra@samba.org> | 2007-05-19 20:57:12 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:22:15 -0500 |
commit | 01a7017d7b0e0cbc3b0923c43b7fe3f0b01aac0b (patch) | |
tree | 461916086f30ca61c6bed9c439a8d96808bd3d8b /source3/smbd/reply.c | |
parent | fa4df182e5777f534edd327446f5b1d1e79c6133 (diff) | |
download | samba-01a7017d7b0e0cbc3b0923c43b7fe3f0b01aac0b.tar.gz samba-01a7017d7b0e0cbc3b0923c43b7fe3f0b01aac0b.tar.bz2 samba-01a7017d7b0e0cbc3b0923c43b7fe3f0b01aac0b.zip |
r23014: For all branches, ensure that if we're blocked on a POSIX
lock we know nothing about that we retry the lock every
10 seconds instead of waiting for the standard select
timeout. This is how we used to (and are supposed to)
work.
Jeremy.
(This used to be commit fa18fc25a50cf13c687ae88e7e5e2dda1120e017)
Diffstat (limited to 'source3/smbd/reply.c')
-rw-r--r-- | source3/smbd/reply.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index c71c7b8bea..ec110e7b21 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -2426,7 +2426,8 @@ int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length WRITE_LOCK, WINDOWS_LOCK, False, /* Non-blocking lock. */ - &status); + &status, + NULL); TALLOC_FREE(br_lck); if (NT_STATUS_V(status)) { @@ -3474,7 +3475,8 @@ int reply_lock(connection_struct *conn, WRITE_LOCK, WINDOWS_LOCK, False, /* Non-blocking lock. */ - &status); + &status, + NULL); TALLOC_FREE(br_lck); @@ -5575,6 +5577,7 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf, BOOL blocking_lock = lock_timeout ? True : False; BOOL defer_lock = False; struct byte_range_lock *br_lck; + uint32 block_smbpid; br_lck = do_lock(smbd_messaging_context(), fsp, @@ -5584,7 +5587,8 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf, lock_type, WINDOWS_LOCK, blocking_lock, - &status); + &status, + &block_smbpid); if (br_lck && blocking_lock && ERROR_WAS_LOCK_DENIED(status)) { /* Windows internal resolution for blocking locks seems @@ -5621,7 +5625,8 @@ int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf, lock_type, WINDOWS_LOCK, offset, - count)) { + count, + block_smbpid)) { TALLOC_FREE(br_lck); END_PROFILE(SMBlockingX); return -1; |