summaryrefslogtreecommitdiff
path: root/source3/locking
AgeCommit message (Collapse)AuthorFilesLines
2001-08-21This is Jeremy pretending to be Volker, 'cos theVolker Lendecke1-64/+136
link from Seattle is having problems. I've added 3 things here to work on the fcntl spin problem. 1). Check *all* tdb return codes... :-). 2). If we're asking ourselves to break an oplock, and we can't find a fsp pointer that matches the entry, this is a *logic bug* and we should abort and panic so someone with gdb can pick up the pieces. 3). After we've broken an oplock, ensure that the entry itself has been removed, and if not remove it ourselves. This should not be neccessary in a correctly working environmen,t, but will provide an added layer of robustness in error situations. 4). I hate german keyboards :-) :-). Jeremy. (This used to be commit 1c94fa80646f9e31377fbb41332fe4780f550cab)
2001-08-20Ensure we are very explicit about what we're comparing whenJeremy Allison1-4/+4
we're comparing structures (ie. don't just do a memcmp). I don't think this will fix the fcntl spin issue, but it's a "just in case" change. Jeremy. (This used to be commit 41066208ad8ca20d35a32bdf9ad934e11465c8f1)
2001-08-13Add printing of errno when POSIX lock requests fail.Jeremy Allison1-3/+3
Jeremy. (This used to be commit befbfea21035b0566fc6ba8674587fc44ad7bbdc)
2001-08-12this is a big global fix for the ptr = Realloc(ptr, size) bug.Simo Sorce2-6/+13
many possible mem leaks, and segfaults fixed. someone should port this fix to 2.2 also. (This used to be commit fa8e55b8b465114ce209344965c1ca0333b84db9)
2001-07-30Added "use mmap" for HPUX.Jeremy Allison2-2/+2
Jeremy. (This used to be commit 840802f10677cb0009cb4df4c37c7d01aa5edacd)
2001-07-02Fixed the nastiest locking bug to track down.... smb_pids are sent in theJeremy Allison2-7/+6
lockingX calls - use that instead of smb_pid in the packet. Jeremy. (This used to be commit a3925cb9c6303ce24e5fecad6c8f3a0ba78b9ee0)
2001-06-30Ensure we return correct error on trying to unlock a region not locked.Jeremy Allison1-2/+2
Jeremy. (This used to be commit 015a077acc49e59179dc10256fd32166ee4623e2)
2001-06-30Fixed the first locking error (test #8 found by locktest code fromJeremy Allison2-6/+45
Clarion locktest. Jeremy. (This used to be commit 5c42845b5bb6fafd0ebf93fbdd23d9bf861da865)
2001-06-04use LDSHFLAGS not -shared in several placesAndrew Tridgell3-4/+4
(This used to be commit 8ec9c87b5d1a7dae17d5b1a30f58effaf5e69e4b)
2001-05-23Stupid typo. Should be if (!tdb).Jeremy Allison1-1/+1
Jeremy. (This used to be commit d3496897f167a8deb1d0034797e8b29f2c51acef)
2001-05-22Defensive brlock and locking database cleaning code.Jeremy Allison2-8/+124
Jeremy. (This used to be commit d7aa42e4593b02ee6e487f7a4633bd7e7620ef2f)
2001-04-13Merge of Andrew's changes in 2.2.Jeremy Allison1-3/+1
Jeremy. (This used to be commit fc76681812b1469208ad6c8847afdfc68bc6db49)
2001-03-30This is a big, rather ugly patch. Whilst investigating the files not truncatedJeremy Allison1-32/+39
when copying to a full disk problem, I discovered that we were not allowing the delete on close flag to be set properly, this led to other things, and after investigation of the proper delete on close semantics and their relationship to the file_share_delete flag I discovered there were some cases where we weren't doing the deny modes properly. And this after only 5 years working on them..... :-) :-). So here's the latest attempt. I realised the delete on close flag needs to be set across all smbds with a dev/ino pair open - in addition, the delete on close flag, allow share delete and delete access requested all need to be stored in the share mode tdb. The "delete_on_close" entry in the fsp struct is now redundant and should really be removed. This may also mean we can get rid of the "iterate_fsp" calls that I didn't like adding in the first place. Whilst doing this patch, I also discovered we needed to do the se_map_generic() call for file opens and POSIX ACL mapping, so I added that also. This code, although ugly, now passes the deny mode torture tests plus the delete on close tests I added. I do need to add one more multiple connection delete on close test to make sure I got the semantics exactly right, plus we should also (as Andrew suggested) move to random testing here. The good news is that NT should now correctly delete the file on disk full error when copying to a disk :-). Jeremy. (This used to be commit 51987684bd231c744da2e5f3705fd236d5616173)
2001-03-11Merge of new 2.2 code into HEAD (Gerald I hate you :-) :-). Allows new SAMRJeremy Allison2-9/+4
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-12-06tdb_unlockchain() no longer returns a valueTim Potter1-4/+4
(This used to be commit aee52c7acf138f8fd651aeb3d9bef79f99d1a2a9)
2000-12-06Changed to sourceforge tdb code. This includes spinlocks (so we now haveJeremy Allison2-17/+17
a --with-spinlocks option to configure, this does mean the on-disk tdb format has changed, so 2.2alphaX sites will need to re-create their tdb's. The upside is no more tdb fragmentation and a +5% on netbench. Swings and roundabouts.... Jeremy. (This used to be commit 9dea7b7c257db487f8ced7dad3fce92fba03ea91)
2000-11-17Fix from John Reilly for equivalence tests.Jeremy Allison1-1/+1
Jeremy. (This used to be commit b456274a7ba22d512bab5ede979cd9363398825b)
2000-10-06Herb's warning fixes. Also the POSIX locking fix.Jeremy Allison1-1/+1
We now use our own vfs layer to do get/set acl calls (hurrah!). Jeremy. (This used to be commit dfe77c7046cbd65ee52aea7439f21503c1eac41d)
2000-10-06Restructuring of vfs layer to include a "this" pointer - can be an fsp orJeremy Allison1-6/+6
a conn struct depending on the call. We need this to have a clean NT ACL call interface. This will break any existing VFS libraries (that's why this is pre-release code). Andrew gets credit for this one :-) :-). In addition - added Herb's WITH_PROFILE changes - Herb - please examine the changes I've made to the smbd/reply.c code you added. The original code was very ugly and I have replaced it with a START_PROFILE(x)/END_PROFILE(x) pair using the preprocessor. Please check this compiles ok with the --with-profile switch. Jeremy. (This used to be commit b07611f8159b0b3f42e7e02611be9f4d56de96f5)
2000-09-11the first cut of the internal messaging system.Andrew Tridgell1-1/+1
The motivation for this system is to replace the UDP message for oplocks, but this commit only does the "set debug level" message. (This used to be commit 2a34ee95f3929cff131db6c5a2b4820194c05b2d)
2000-06-13allow posix locking database to be opened read-only (for smbstatus)Andrew Tridgell2-11/+11
(This used to be commit b9d78738bb30da3d989dfacc95cfde529f2afca5)
2000-06-13add some bracketsAndrew Tridgell1-1/+1
(This used to be commit bf67721ef5cc6d5ad1762fca320ef612025b4593)
2000-05-25Fixed misunderstanding found during CIFS conference. Overlapping lockJeremy Allison1-340/+278
ranges (not just included lock ranges) should be handled correctly. UNIT test still needed. Jeremy. (This used to be commit 07872298e3ee8b4b50b69cb4e49b88635792128e)
2000-05-10Using a structure for a tdb key can lead to insideous, hardHerb Lewis3-20/+25
to find bugs. On 64 bit IRIX, structure packing means that a struct { SMB_DEV_T dev /* 4 bytes */ SMB_INO_T ino /* 8 bytes */ } has 4 bytes of padding between the two members. If you don't null the memory before using it as a tdb key, you randomly can't find keys depending on what is in the padding. This caused me immense pain and was hard to track down.... :-) Jeremy. (This used to be commit f2a5ba3f0939f59097f0ef6a25f1cf9b5574f157)
2000-05-05Fix for uninitialized memory read in brlock code. brl_locktest now needsJeremy Allison2-2/+3
to correctly set the fnum, as the brl_conflict code looks at it. Jeremy. (This used to be commit df87259a356b91989604a10b3691480dcd16cf3f)
2000-05-05Two fixes. Added missong logic & case in lock split code.Jeremy Allison1-4/+12
Fixed range split into two, as DLIST_ADD has the wrong semantics... Jeremy. (This used to be commit 82681edda14dcc3d58bb303cfac5452072de67df)
2000-05-04Updated to fix overlapping problem.Jeremy Allison1-68/+142
Jeremy. (This used to be commit 9bdfe0f5023988962f8a8b4d847de7a0ee27f85c)
2000-05-04Fix for debug statement crash.Jeremy Allison1-1/+1
Jeremy. (This used to be commit 57bf92d90147b207664152d44ce4bfb5235dc7d8)
2000-05-03Fix based on Elrond's code to reduce the store size on removing dead records.Jeremy Allison1-0/+1
Jeremy. (This used to be commit 09e92a61a966d09f543ba541ddb3240cc4718579)
2000-05-03Fixed the bug locktest.c found, it was an off-by-one error in the non-overlapJeremy Allison1-1/+1
case. Jeremy. (This used to be commit 65150c408a5254215de89c8c774c33c4d011c2c0)
2000-05-03Fixed silly bug where I wasn't checking for matching fd's in closing a file.Jeremy Allison1-7/+24
This caused smbd crashes on SIGKILL. Jeremy. (This used to be commit d4dcefd12d14df112f083c312acbea0196bc5c23)
2000-05-03Added range info to the panic message to track down the bug withJeremy Allison1-1/+5
locktest. Jeremy. (This used to be commit 91f038356b7efa04cf4bfa5e6afd8b144b6b4ad5)
2000-05-03- clear dead locks at startupAndrew Tridgell1-2/+47
- fixed a bug which caused lock records to not decrease in size (This used to be commit 51624a3a2f5a4ac55b4f26f572a2fc399f9c808e)
2000-05-03Fix for stacking locks in brlock and POSIX. Windows only allows a read lockJeremy Allison2-92/+130
to overlay a write lock on the same fnum. When overlaying read locks onto a write lock, the number of locks is counted, and the first unlock removes the write lock and downgrades this to a read lock. Do the same when mapping to POSIX. Jeremy. (This used to be commit 74d42644e6e52808037975e909aa56c850838b76)
2000-05-02Implemented the last (I hope:-) part of the locking puzzle, the referenceJeremy Allison1-23/+90
counting when Windows downgrades a write lock to a read lock, then reference counts the unlocks to match the locks. With this code the POSIX unlock isn't done until the final Windows unlock. Jeremy. (This used to be commit 6eb4fb6eef367f68169d6ec1c816226b1ad9f110)
2000-05-02split the username in the vuser structure into a separateAndrew Tridgell1-1/+2
userdom_struct. As the name implies this also contains a domain (unused at the moment). This will be important shortly, as operation in appliance mode needs the domain to be always carried with the username. (This used to be commit ee8546342d5be90e730372b985710d764564b124)
2000-05-02Moved uglyness needed in fcntl locking (64->32 bit mapping, NFSJeremy Allison1-3/+121
errors etc.) into locking/posix.c, where it is needed. fcntl_lock in lib/util.c is now very small and clean. Added (*lock) op to vfs layer. Jeremy. (This used to be commit 46092ee1410faa4e3c143d80a960a8adaa19d7fc)
2000-05-02Added sys_fork() and sys_getpid() functions to stop the overheadJeremy Allison1-8/+8
of doing a system call every time we want to just get our pid. Jeremy. (This used to be commit 148628b616b5c29ba6340d65fc3ddbcabba6e67a)
2000-05-01locking/posix.c: Fixed double-free nasty crash bug found by insure.Jeremy Allison1-3/+0
utils/make_smbcodepage.c: utils/make_unicodemap.c: Insure 'make install' fixes. Jeremy. (This used to be commit 3b25f7368be3877e9ad27498bc9451ec88d4b07f)
2000-05-01added TDB_INTERNAL, TDB_NOLOCK and TDB_NOMMAP flags.Andrew Tridgell1-3/+3
TDB_INTERNAL replaces the old method of passing a null filename (This used to be commit 8ec815920d46f205b9f3fff82397c731753c3a10)
2000-04-30- removed all our old wildcard matching code and replaced it with aAndrew Tridgell1-2/+2
call to ms_fnmatch(). This also removes all the Win9X semantics stuff and a bunch of other associated cruft. - moved the stat cache code into statcache.c - fixed the uint16 alignment requirements of ascii_to_unistr() and unistr_to_ascii() - trans2 SMB_FIND_FILE_BOTH_DIRECTORY_INFO returns the short name as unicode always (at least thats what NT4 does) - fixed some errors in the in-memory tdb code. Still ugly, but doesn't crash as much (This used to be commit 03e9cea004bbba72161a5323cf3b4556c94aed8e)
2000-04-29Removed tdb locking calls (picky Andrew...:-)Jeremy Allison1-25/+12
(This used to be commit 6bded3b74e974b97d54acf9289f4cf812e2b1af7)
2000-04-28Ok - this is the *third* implementation of this (third time's the charm :-).Jeremy Allison3-1122/+137
This implementation keeps all POSIX lock records in a separate in memory tdb database only known about in locking/posix.c. In addition, the pending close fd's are also held in a tdb which has an array of fd's indexed by device and inode. The walk-split code uglyness has been moved to posix.c from brlock.c, which is the only place that needs to know about it, and the extra functions hacked into brlock to expose internal state have been removed. This implementation passes smbtorture locktest4, the only thing I need to check now for completeness is what to do about lock upgrade/downgrades which Win32 allows under some *very* strange circumstances. Jeremy. (This used to be commit 3f655de1c764b9ee1472a111621d4317f19f624d)
2000-04-28Split off of POSIX locking into separate unit as Andrew requested.Jeremy Allison1-0/+1208
Done so I don't lose my edits... :-). Jeremy. (This used to be commit 31a57be658f3fa3569a552e9c5d30174f5a51649)
2000-04-28Forgot to close when "posix locking" is set to False.Jeremy Allison1-2/+5
Jeremy. (This used to be commit b812f09ba8ef074c9ff0747ea03a1e33f1ebbe71)
2000-04-28Added optimization where we are single opener (don't free POSIX locks).Jeremy Allison1-1/+21
Jeremy. (This used to be commit a2deb91128d59ad04f4ec858ffe4e30f2afb0edd)
2000-04-28Made changes suggested by Andrew review.Jeremy Allison1-37/+52
fd_close now calls fd_close_posix() directly. set_posix_lock/release_posix_lock() now handle the reference counting. More changes due when this gets moved to the file locking/posix.c Jeremy. (This used to be commit 239abd48f049c6a8d2bbc0636eacf347ab77588c)
2000-04-27Ok - this is more subtle than it looks :-).Jeremy Allison2-7/+15
When a file is being closed, once it passes the fnum and tid tests then the locking context should be ignored when removing all locks. This is what is done in the brl close case, but when you have outstanding POSIX locks, then you cannot remove all the brl locks in one go, you have to get the lock list and call do_unlock individually. As this uses global_smbpid as the locking context, you need to make sure that this is set correctly for the specific lock being removed. I now do this by storing the smbpid in each entry in the unlock list returned from the query call. I removed the smbpid from fsp (not needed) and things seem ok (even with the stupid smbpid tricks that smbtorture plays :-). Jeremy. (This used to be commit 6baa96bb466915cc17e8cbad50254d6bd47b967b)
2000-04-27Fixed subtle unlocking bug when a file is closed. We need to store theJeremy Allison2-16/+32
smbpid used when a file was opened in the files_struct. Else we use the wrong global_smbpid when we are closing the file and trying to remove the brl locks - this causes the brl locks to be left when the file is closed as the samba_context check fails. Jeremy. (This used to be commit 2746e5602e493e5b022764b4b839eb4d2f14363b)
2000-04-27Did the rewrite Andrew wanted where all knowledge of POSIX locking isJeremy Allison1-5/+179
removed from the smbd/open.c code. We now use a dlink list of structures indexed by dev/inode to store all pending fd's for close. This could be rewritten to use lib/hash.c if this is discovered to be too slow in use. Andrew, please take a look and let me know if this is what you had in mind. Jeremy. (This used to be commit 0487841120a7584da9a2b83b9574562c415d7024)