summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-01-30 01:42:08 +0000
committerJeremy Allison <jra@samba.org>2003-01-30 01:42:08 +0000
commitf26591b3ded7a4c691b1ebe75737da29f7b2b873 (patch)
treeb9cf7dcf2c74829f2bf01d085d41bd4659fb889d /source3/include
parent4c9f6c5a31efc950389fba3474dea5b977a23152 (diff)
downloadsamba-f26591b3ded7a4c691b1ebe75737da29f7b2b873.tar.gz
samba-f26591b3ded7a4c691b1ebe75737da29f7b2b873.tar.bz2
samba-f26591b3ded7a4c691b1ebe75737da29f7b2b873.zip
Fix for interesting resource constraint condition. When all opens are
level 2 and a request for open with no oplock is received then the smbd should send *synchronous* break messages, not asynchronous, otherwise it spins very rapidly, releasing the lock, sending the 'break to none' messages and then re-acquiring the lock before any other process has a chance to get the lock and remove it's own oplock (at least on linux). Jeremy. (This used to be commit d1e8991a76a57b7d96dd7db3c1d9bbf5b28da88e)
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/smb.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 3ca8d32289..8138555539 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1512,15 +1512,17 @@ extern int chain_size;
* +----+--------+-------+--------+---------+
*/
-#define OPLOCK_BREAK_CMD 0x1
#define OPLOCK_BREAK_PID_OFFSET 2
#define OPLOCK_BREAK_DEV_OFFSET (OPLOCK_BREAK_PID_OFFSET + sizeof(pid_t))
#define OPLOCK_BREAK_INODE_OFFSET (OPLOCK_BREAK_DEV_OFFSET + sizeof(SMB_DEV_T))
#define OPLOCK_BREAK_FILEID_OFFSET (OPLOCK_BREAK_INODE_OFFSET + sizeof(SMB_INO_T))
#define OPLOCK_BREAK_MSG_LEN (OPLOCK_BREAK_FILEID_OFFSET + sizeof(unsigned long))
+/* Message types */
+#define OPLOCK_BREAK_CMD 0x1
#define KERNEL_OPLOCK_BREAK_CMD 0x2
#define LEVEL_II_OPLOCK_BREAK_CMD 0x3
+#define ASYNC_LEVEL_II_OPLOCK_BREAK_CMD 0x4
/*
* Capabilities abstracted for different systems.