summaryrefslogtreecommitdiff
path: root/source3/smbd/oplock_linux.c
AgeCommit message (Collapse)AuthorFilesLines
2002-06-17compile warngin fixes merged from 2.2Gerald Carter1-6/+6
(This used to be commit 29874f4b8fecdc7cbd84d656dafce54cca49e0b1)
2002-06-06Overly complex but neccessary fix for kernel oplock problems. The issueJeremy Allison1-21/+24
is that there are some times when we should return an EINTR from a select, some times when we should not. As we can take a signal at any time, we have to eat EINTR's in some selects. This means we need to check for kernel oplock breaks more often in the main loop, as well as add the queuing mechanism needed for the changenotify code (due to the mistake in understanding POSIX semantics w.r.t. setting a signal mask in a signal handler). This code now passes all my tests. However, (and IMHO and I know tridge disagrees) - the correct way to fix this is to run with RT signals blocked and explicitly unblock them just before the main select, block them after and then process them all in one place. Just my 2cents :-). Jeremy. (This used to be commit a8c85372e2826a07117c89b39270cde8641ce55d)
2002-05-22Merge of receive_local_message fix from 2.2.5.Jeremy Allison1-5/+5
Jeremy. (This used to be commit d4dbb9cb1338332bda3651dc4b86abcf47e9c2d2)
2002-01-30Removed version number from file header.Tim Potter1-2/+1
Changed "SMB/Netbios" to "SMB/CIFS" in file header. (This used to be commit 6a58c9bd06d0d7502a24bf5ce5a2faf0a146edfa)
2001-11-06Fixed unsigned / long unsigned format missmatch.Jeremy Allison1-4/+4
Jeremy (This used to be commit 86c2f9636635283beb8e496315a7bfac881355dd)
2001-10-20Move from timestamp to gen count file id's for finding oplocked filesJeremy Allison1-46/+46
in a tdb. Jeremy. (This used to be commit 058ae6b58f61ef46013dd076af3a84de5fbaaab1)
2001-10-02Removed 'extern int DEBUGLEVEL' as it is now in the smb.h header.Tim Potter1-2/+0
(This used to be commit 2d0922b0eabfdc0aaf1d0797482fef47ed7fde8e)
2001-09-08convert more code to using d_printfAndrew Tridgell1-1/+2
(This used to be commit 60d297303488ed583537ca2853828fccd6da2ade)
2001-06-25fixed usage of socklen_t and also tidied up SIG_ATOMIC_T, using a typedef ↵Andrew Tridgell1-5/+5
instead of a define (This used to be commit e2ecff419fdc0a0dc7551b33b377dc11061ef2a3)
2001-05-08More compiler warning fixes.Tim Potter1-2/+2
(This used to be commit 88a7b2c3f80b17ca8ab2112e9a98f55f1a11d88c)
2001-04-27Fix from matthew.hart@veritas.com - bad error return from ↵Jeremy Allison1-2/+2
linux_oplock_receive_message(). Jeremy. (This used to be commit b35ca2c6b13877bc6e09c7c4179d9529a7d3e0b3)
2001-03-11Merge of new 2.2 code into HEAD (Gerald I hate you :-) :-). Allows new SAMRJeremy Allison1-5/+0
RPC code to merge with new passdb code. Currently rpcclient doesn't compile. I'm working on it... Jeremy. (This used to be commit 0be41d5158ea4e645e93e8cd30617c038416e549)
2000-06-19Paranoia changes to ensure that anything touched by a signal handlerJeremy Allison1-7/+7
and the main code is declared as VOLATILE SIG_ATOMIC_T. Jeremy. (This used to be commit b737c784e34b0e1af014cb828ef37d5b6d73c3e2)
2000-06-12enable the Linux change notify code and change some notify debug codeAndrew Tridgell1-6/+17
(This used to be commit c6be511fcc1be79619a0184f03d4c33dbfe12f04)
2000-06-12totally rewrote the async signal, notification and oplock notificationAndrew Tridgell1-12/+17
handling in Samba. This was needed due to several limitations and races in the previous code - as a side effect the new code is much cleaner :) in summary: - changed sys_select() to avoid a signal/select race condition. It is a rare race but once we have signals doing notification and oplocks it is important. - changed our main processing loop to take advantage of the new sys_select semantics - split the notify code into implementaion dependent and general parts. Added the following structure that defines an implementation: struct cnotify_fns { void * (*register_notify)(connection_struct *conn, char *path, uint32 flags); BOOL (*check_notify)(connection_struct *conn, uint16 vuid, char *path, uint32 flags, void *data, time_t t); void (*remove_notify)(void *data); }; then I wrote two implementations, one using hash/poll (like our old code) and the other using the new Linux kernel change notify. It should be easy to add other change notify implementations by creating a sructure of the above type. - fixed a bug in change notify where we were returning the wrong error code. - rewrote the core change notify code to be much simpler - moved to real-time signals for leases and change notify Amazingly, it all seems to work. I was very surprised! (This used to be commit 44766c39e0027c762bee8b33b12c621c109a3267)
2000-06-11a better test for oplocks being enabled in this kernelAndrew Tridgell1-1/+18
(This used to be commit cc0e919fdcb116c8f9688a4f5d7803fc8d7f9588)
2000-06-11fixed Linux capabilities handlingAndrew Tridgell1-21/+39
I used a trick where CAP_LEASE isn't claimed until it is needed. This means we avoid a system call per setreuid(), and never call capset() unless a user tries to get a oplock on a file that they don't own (This used to be commit afa98d511f70f455d599c3a36dd25e49fe74ac09)
2000-06-11Linux kernel oplocks now seem to work, but need a _lot_ of testingAndrew Tridgell1-6/+57
I had to modify sys_select() to not loop on EINTR. I added a wrapper called sys_select_intr() which gives the old behaviour. (This used to be commit b28cc4163bc2faaa80c5782fc02c8f03c410cdeb)
2000-06-10a first pass at Linux kernel oplocks supportAndrew Tridgell1-0/+205
(This used to be commit 3253085d9883a181c04b9c9ecf7d0ccdfbcee88d)