summaryrefslogtreecommitdiff
path: root/source4/ntvfs/common
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r3357: removed the need to use TDB_CLEAR_IF_FIRST in Samba4.Andrew Tridgell2-2/+2
We found a few months ago that TDB_CLEAR_IF_FIRST is extremely inefficient for large numbers of connections, due to a fundamental limitation in the way posix byte range locking is implemented. Rather than the nasty workaround we had for Samba3, we now have a single "cleanup tmp files" function that runs when smbd starts. That deletes the tmp tdbs, so TDB_CLEAR_IF_FIRST is not needed at all. (This used to be commit ffa285bc783c775a2d53a58fb691ca339e6c76ae)
2007-10-10r3312: in the brlock code, we prevent lock stampedes by attempting to notAndrew Tridgell1-1/+3
wakeup all pending locks at once. This change means that we only trigger this anti-stampede code for write locks, as for pending read locks the correct behaviour is to stampede (as they will all succeed) (This used to be commit 8021d1d74207db1204139309592b9d2f80f2bd0e)
2007-10-10r3271: use "struct messaging_context *" instead of "void *" in messaging APIAndrew Tridgell2-4/+4
(This used to be commit cc93813e4a09c538ad485dc2b3cb4c9be34f3d18)
2007-10-10r3189: improved the share_conflict() logic (both in terms of readability andAndrew Tridgell1-24/+50
correctness). pvfs now passes the BASE-RENAME test. (This used to be commit 4cf3f65a5c19fdad62a0bdef225b2d9002cf8c8b)
2007-10-10r3174: added pvfs_is_open() to allow us to check for open files on unlink. WeAndrew Tridgell1-0/+20
now pass BASE-UNLINK. (This used to be commit f23a2f8538bda8f6790e86c93ee22436388b2975)
2007-10-10r3153: pvfs now passes the first 9 of the BASE-DELETE testsAndrew Tridgell1-1/+55
(This used to be commit f8041feaebc9170763ce04d2dd90cfc1c7889c21)
2007-10-10r3147: added basic share modes support for pvfs (or more precisely, ntcreatexAndrew Tridgell1-1/+138
share_access support). This is enough for us to pass the BASE-DENY2 test, but is a long way from fully correct share modes. (This used to be commit b5a6dd3cbf28a3a3b3a3656042ac8f50fca29e1c)
2007-10-10r3135: split the "create new" logic out from the "open existing" logic inAndrew Tridgell1-2/+3
pvfs_open, and handle the various race conditions that are inherent in cifs on unix, so we do the best we can when the race happens. the ntcreatex code is really starting to take shape now (This used to be commit 395c3815b468ae55de9a1135e478711f0e7d8cfc)
2007-10-10r3129: typoVolker Lendecke1-1/+1
(This used to be commit f9dfd5ff1fcfd21fee9b08993b5fe6a6fae7f9d5)
2007-10-10r3127: added the initial code for the open files database. Doesn't doAndrew Tridgell1-0/+145
anything yet, but will soon be the core of the shares modes code. (This used to be commit ad1edabf95c6c331aac4f0caa7d31193e26bc176)
2007-10-10r3126: in the brlock code I had used a void* for the brl context as I didn'tAndrew Tridgell1-14/+9
want to expose the brl context structure outside the brlock.c code. Instead, I now use "struct brl_context *" and rely on C being happy to pass around pointers to unknown structures as long as they are not dereferenced. I will be interested to see how the build farm likes this. (This used to be commit cb155c8ad837285c5a7f5b104968239df0b65fd2)
2007-10-10r3057: - moved the idtree.c code into lib/Andrew Tridgell1-360/+0
- converted the tid handling to use a idtree instead of bitmaps (This used to be commit 4220914179d10132057216650b65ed7f7679717e)
2007-10-10r3056: added a id -> pointer data structure (a type of radix tree). This isAndrew Tridgell1-0/+360
an extremely efficient way of mapping from an integer handle (such as an open file handle) to a pointer (such as the structure containing the open file information). The code is taken from lib/idr.c in the 2.6 Linux kernel, and is very fast and space efficient. By using talloc it even has auto cleanup. This commit converts the handling of open file handles and open directory search handles to use the idtree routines. In combination with talloc destructors, this simplifies the structure handling in the pvfs backend a lot. For example, we no longer need to keep a linked list of open directory searches at all, and we no longer need to do linear scans of the list of open files on most operations. The end result is that the pvfs code is now extremely scalable. You can have 10s of thousands of open files and open searches and the code still runs very fast. I have also added a small optimisation into the file close path, to avoid looking in the byte range locking database if we know that there are no locks outstanding. (This used to be commit 16835a0ef91a16fa01145b773aad8d43da215dbf)
2007-10-10r3031: added support for lock cancelation, which effectively just triggers ↵Andrew Tridgell1-5/+14
an early lock timeout added support for more of the bizarre special lock offset semantics of w2k3 (This used to be commit d5bfc910b1200fb283e26572dc57fcf93652fd32)
2007-10-10r3029: implemented byte range lock timeouts.Andrew Tridgell1-28/+244
This adds a pvfs_wait_message() routine which uses the new messaging system, event timers and talloc destructors to give a nice generic async event handling system with a easy to use interface. The extensions to pvfs_lock.c are based on calls to pvfs_wait_message() routines. We now pass all of our smbtorture locking tests, although while writing this code I have thought of some additonal tests that should be added, particularly for lock cancel operations. I'll work on that soon. This commit also extends the smbtorture lock tests to test the rather weird 0xEEFFFFFF locking semantics that I have discovered in win2003. Win2003 treats the 0xEEFFFFFF boundary as special, and will give different error codes on either side of it. Locks on both sides are allowed, the only difference is which error code is given when a lock is denied. Anyone like to hazard a guess as to why? It has me stumped. (This used to be commit 4395c0557ab175d6a8dd99df03c266325949ffa5)
2007-10-10r3012: added initial support for byte range locking in the posix vfs. This isAndrew Tridgell1-0/+418
enough for us to pass locktest, but does not yet support lock timeouts and some of the other esoteric features. (This used to be commit 58a92abd88f190bc60894a68e0528e95ae33fe39)