summaryrefslogtreecommitdiff
path: root/source4/ntvfs/posix
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r3288: - updated the path processing in pvfs to pass the RAW-CHKPATH test. ThisAndrew Tridgell2-32/+52
rather extensive test reveals some really bizarre error code handling in w2k3. - extended and simplified the RAW-CHKPATH test, making it easier to read (note that Samba3 fails the new tests - jra may wish to look) - marked RAW-CHKPATH as pass for pvfs (This used to be commit 32dccf91cfa5b57f84dd6307720b3f45faa10ae0)
2007-10-10r3278: - rewrote the client side rpc connection code to use lib/socket/Andrew Tridgell1-2/+2
rather than doing everything itself. This greatly simplifies the code, although I really don't like the socket_recv() interface (it always allocates memory for you, which means an extra memcpy in this code) - fixed several bugs in the socket_ipv4.c code, in particular client side code used a non-blocking connect but didn't handle EINPROGRESS, so it had no chance of working. Also fixed the error codes, using map_nt_error_from_unix() - cleaned up and expanded map_nt_error_from_unix() - changed interpret_addr2() to not take a mem_ctx. It makes absolutely no sense to allocate a fixed size 4 byte structure like this. Dozens of places in the code were also using interpret_addr2() incorrectly (precisely because the allocation made no sense) (This used to be commit 7f2c771b0e0e98c5c9e5cf662592d64d34ff1205)
2007-10-10r3276: - allow for more than 256 open old style searches (limit currently ↵Andrew Tridgell2-14/+53
set at an arbitrary 5000) - auto-cleanup old searches that the client forgot to close (common with old searches) - expanded the RAW-SEARCH test to test more than 256 old searches, and old search rewind (w2k3 fails this - it appears to not support rewind on old style searches) (This used to be commit bc83d823b2140a10007490bf0101843a886f99a6)
2007-10-10r3268: - fixed wildcard handling in new dirlist codeAndrew Tridgell1-12/+41
- ensure that d_name from readdir is not used after closedir (This used to be commit 5352613342c58192ae00618977041b98cd0ff7b6)
2007-10-10r3262: - new pvfs_dirlist code that reopens the directory between searchAndrew Tridgell4-101/+176
calls. This is needed to allow for "new files appear during a search" behaviour - pvfs now passes RAW-SEARCH (This used to be commit 0d98f7653a1d58510a6cd4c2ac6c5e05c541109c)
2007-10-10r3260: redid the pvfs_dirlist() interface in preparation for a "keepAndrew Tridgell3-55/+79
directory open" implementation, as opposed to the "load the whole directory" interface used now. This will be needed to pass RAW-SEARCH (This used to be commit 692623c6c0a2c6817fddfa77cd1c2525c27145c4)
2007-10-10r3258: fixed "don't change" attribute for RAW_SFILEINFO_BASIC_INFOAndrew Tridgell1-1/+1
(This used to be commit 51f84800d50f44ec47a34e1c922c6197eb794558)
2007-10-10r3255: - fixed 2 uninitialised data errors found with valgrindAndrew Tridgell1-1/+2
- fixed offset of setup words in nttrans reply (This used to be commit 86b5118c2ae605560a196ee014b6134ec2928c5b)
2007-10-10r3254: - expanded the RAW-IOCTL testAndrew Tridgell1-9/+1
- fixed the old ioctl interface to not check handle before failing - pvs now passes RAW-IOCTL (This used to be commit 98f6dbdba46c907039951559ec5f526410fd0039)
2007-10-10r3253: - added rudimentary support for ntioctl in pvfsAndrew Tridgell4-9/+97
- catch the SIGXFSZ signal, which for some completely insane reason is generated in current Linux systems when you write before the maximum offset in a file (maximum is 2^41 on my box). Why wasn't errno good enough for this? - give the right ntstatus code for large offset write failures (This used to be commit 367f0c2af409e4292f727e8a865762a008fd7e67)
2007-10-10r3249: - change_time is closer to ctime than mtimeAndrew Tridgell2-3/+7
- pvfs now passes the RAW-CLOSE test (This used to be commit 98aea91ce67a0c64a98537bfe244495f10672323)
2007-10-10r3248: don't stop searches on failed fill_search_info()Andrew Tridgell1-7/+1
(This used to be commit 4cdd750b5cc9b26dbbaebe58b4f1c3984dac8d6c)
2007-10-10r3247: FILE_ATTRIBUTE_NORMAL is only a null-op for setattr and setattre, not ↵Andrew Tridgell1-1/+1
basic_info (This used to be commit 36286e477c9bc7b6e268fffb123b565b6e897a44)
2007-10-10r3246: new files should get created with FILE_ATTRIBUTE_ARCHIVEAndrew Tridgell1-1/+1
(This used to be commit 090574c6982f703b124a5a123d2199be8f5b3968)
2007-10-10r3241: don't skip the read completely for a zero-length read, as it could ↵Andrew Tridgell1-8/+7
give a lock conflict (This used to be commit 7ce6139f984c72a6347c7a64d95d5278bcf3e868)
2007-10-10r3240: - update the rules for what error codes should be given on theAndrew Tridgell7-66/+327
different type of unlink an seach mismatches - wildcard directory listings that have attribute FILE_ATTRIBUTE_DIRECTORY and match "." or ".." should be failed. - don't set the write_time on SMBclose unless it is non-zero - added much better support for setfileinfo and setpathinfo in pvfs - better (and more efficient) handling of .. and . components in filenames (This used to be commit 9305b07af395a158cb9f0c1c9486f7122c79d357)
2007-10-10r3227: added a per-share option "case insensitive filesystem", that tells theAndrew Tridgell4-10/+27
backend that the underlying filesystem is case insensitive, so it can bypass the directory search if the name is not found. (This used to be commit d84ade90ce7e03ec749d6ae8dcdcb41de85d836e)
2007-10-10r3207: - reformat error msgs in BASE-DIR* testsAndrew Tridgell4-4/+11
- added support for mandatory attributes in old style directory search - we now pass BASE-DIR1 and BASE-DIR2 (This used to be commit efaa0eaec49e952aa515c3448246d9048a484c26)
2007-10-10r3200: - improved the accuracy of openx emulation. We now nearly pass the ↵Andrew Tridgell2-11/+7
openx portion of RAW-OPEN - fixed directory size reporting to make it consistent. we now pass the ntcreatex portion of RAW-OPEN (This used to be commit 6282e5811b8d4f1c17152d86875ac60d1323779d)
2007-10-10r3198: check for too many .. components in filenamesAndrew Tridgell1-1/+16
pvfs now passes RAW-MKDIR (This used to be commit 41adb385f123b8d4cd3fe2eb03d891b6bdcf2361)
2007-10-10r3195: fill in more of the fsinfo fields, and avoid calling the potentiallyAndrew Tridgell1-25/+102
expensive sys_fsusage() call unless we really need to (This used to be commit 57eb14773b1811fbab2c37d1ff815c1ab07b3685)
2007-10-10r3194: fixed an uninitialised variableAndrew Tridgell1-0/+1
(This used to be commit 8123cfc59edb7b455c7f6511480f0faeb4c9aba8)
2007-10-10r3193: improved the initial permissions choice for file create, based upon ↵Andrew Tridgell2-61/+61
dos attribute (This used to be commit f6fb1e3493a2a0734747f769cd1013215d967cde)
2007-10-10r3192: make sure we don't call pvfs_can_delete() until after we have ↵Andrew Tridgell1-10/+5
confirmed that name->exists it true (This used to be commit d368d2f4fe23bdc13f6b9bbdc044dd158ab61169)
2007-10-10r3189: improved the share_conflict() logic (both in terms of readability andAndrew Tridgell3-11/+24
correctness). pvfs now passes the BASE-RENAME test. (This used to be commit 4cf3f65a5c19fdad62a0bdef225b2d9002cf8c8b)
2007-10-10r3180: - basic support for SEC_RIGHT_MAXIMUM_ALLOWED in pvfsAndrew Tridgell1-2/+14
- RAW-CONTEXT test now passes (This used to be commit 0dae9fef09ec8bce19c39a0caf36e0882e507bc4)
2007-10-10r3179: - fixed error return on utime failureAndrew Tridgell2-2/+3
- formatting fix (This used to be commit 8ca4d7c51e5c76aa28f600d49437a45a8a0d31a9)
2007-10-10r3178: honor the write_time on pvfs_close()Andrew Tridgell1-0/+5
(This used to be commit 4e28c45bafa453eaa94716a5b77d830b81efe6cf)
2007-10-10r3177: check for open files on renameAndrew Tridgell1-0/+5
(This used to be commit c334182095c53b09fcb65a40053b518acb6ec38b)
2007-10-10r3174: added pvfs_is_open() to allow us to check for open files on unlink. WeAndrew Tridgell2-0/+21
now pass BASE-UNLINK. (This used to be commit f23a2f8538bda8f6790e86c93ee22436388b2975)
2007-10-10r3172: much better qfileinfo implementation in pvfs. We now pass RAW-QFILEINFOAndrew Tridgell1-52/+179
(This used to be commit 65c2c81b8cf6aeeccdc53d8145c2595f230bd531)
2007-10-10r3161: pvfs now passes the RAW-SEEK testAndrew Tridgell9-21/+149
(This used to be commit a953d4a42c8fa3fe930c319d5157fc406a1035da)
2007-10-10r3160: recognise RAW_SFILEINFO_DISPOSITION_INFORMATION (fixes temporary ↵Andrew Tridgell1-0/+3
files from excel) (This used to be commit 1c05147f7103127c11b06bb0a812970577ace5f6)
2007-10-10r3159: use easy to recognise file handle numbers for new file, old file and ↵Andrew Tridgell1-9/+17
directory in pvfs_open, to make analysing sniffs easy (This used to be commit 5c16ed02542f7e143d66f4ba8d166bb6882bf53a)
2007-10-10r3154: pvfs now passes all of BASE-DELETEAndrew Tridgell1-2/+24
(This used to be commit abbfca1401818edd896493ab9c875224e3b7e0e7)
2007-10-10r3153: pvfs now passes the first 9 of the BASE-DELETE testsAndrew Tridgell2-27/+88
(This used to be commit f8041feaebc9170763ce04d2dd90cfc1c7889c21)
2007-10-10r3147: added basic share modes support for pvfs (or more precisely, ntcreatexAndrew Tridgell4-40/+103
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-10r3142: fill in all the ntcreatex response fields explicitly, rather thanAndrew Tridgell1-35/+41
zeroing. This makes it clearer what bits are not yet implemented (and is more valgrind friendly) (This used to be commit 18b471327b596f3ea8f6a7b39ba0a83b2584ed0b)
2007-10-10r3135: split the "create new" logic out from the "open existing" logic inAndrew Tridgell2-29/+188
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-10r3133: - more consistent error checking in rename and setfileinfoAndrew Tridgell3-2/+21
- add paranoid checking of device/inode change during open to detect race conditions (This used to be commit 043361fed487ed494fa497ffde1007b3f3bc0c29)
2007-10-10r3127: added the initial code for the open files database. Doesn't doAndrew Tridgell3-0/+10
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-1/+1
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-10r3081: several updates to ntvfs and server side async request handling inAndrew Tridgell4-136/+199
preparation for the full share modes and ntcreatex code that I am working on. highlights include: - changed the way a backend determines if it is allowed to process a request asynchronously. The previous method of looking at the send_fn caused problems when an intermediate ntvfs module disabled it, and the caller then wanted to finished processing using this function. The new method is a REQ_CONTROL_MAY_ASYNC flag in req->control_flags, which is also a bit easier to read - fixed 2 bugs in the readbraw server code. One related to trying to answer a readbraw with smb signing (which can't work, and crashed our signing code), the second related to error handling, which attempted to send a normal SMB error packet, when readbraw must send a 0 read reply (as it has no header) - added several more ntvfs_generic.c generic mapping functions. This means that backends no longer need to implement such esoteric functions as SMBwriteunlock() if they don't want to. The backend can just request the mapping layer turn it into a write followed by an unlock. This makes the backends considerably simpler as they only need to implement one style of each function for lock, read, write, open etc, rather than the full host of functions that SMB provides. A backend can still choose to implement them individually, of course, and the CIFS backend does that. - simplified the generic structures to make them identical to the principal call for several common SMB calls (such as RAW_WRITE_GENERIC now being an alias for RAW_WRITE_WRITEX). - started rewriting the pvfs_open() code in preparation for the full ntcreatex semantics. - in pvfs_open and ipc_open, initially allocate the open file structure as a child of the request, so on error we don't need to clean up. Then when we are going to succeed the open steal the pointer into the long term backend context. This makes for much simpler error handling (and fixes some bugs) - use a destructor in the ipc backend to make sure that everthing is cleaned up on receive error conditions. - switched the ipc backend to using idtree for fnum allocation - in the ntvfs_generic mapping routines, use a allocated secondary structure not a stack structure to ensure the request pointer remains valid even if the backend replies async. (This used to be commit 3457c1836c09c82956697eb21627dfa2ed37682e)
2007-10-10r3064: - use UINT8_MAX and UINT16_MAX instead of hex values for ↵Andrew Tridgell2-3/+3
idr_get_new() limits - change idr_get_new() to use > instead of >= in the limit check (This used to be commit 834b09929bcb8aabdd151b7c2306001497cabdb4)
2007-10-10r3057: - moved the idtree.c code into lib/Andrew Tridgell1-1/+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 Tridgell6-130/+134
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-10r3039: This solves the problem of async handlers in ntvfs backends not beingAndrew Tridgell2-3/+34
in the right state when called. For example, when we use the unixuid handler in the chain of handlers, and a backend decides to continue a call asynchronously then we need to ensure that the continuation happens with the right security context. The solution is to add a new ntvfs operation ntvfs_async_setup(), which calls all the way down through the layers, setting up anything that is required, and takes a private pointer. The backend wanting to make a async calls can use ntvfs_async_setup() to ensure that the modules above it are called when doing async processing. (This used to be commit a256e71029727fa1659ade6257085df537308c7d)
2007-10-10r3035: if the ntvfs layers prior to us have said that we can't perform anAndrew Tridgell1-1/+2
operation asynchronously (such as the nbench module), then ignore lock timeouts, as they would make no sense (This used to be commit 2894dd0ac0ddd0ae5b4d536d5cff0690bbfab1a0)
2007-10-10r3034: - fixed a bug in message dispatch, when the dispatch function called ↵Andrew Tridgell3-14/+38
messaging_deregister() - added a pvfs_lock_close_pending() hook to remove pending locks on file close - fixed the private ptr argument to messaging_deregister() in pvfs_wait - fixed a bug in continuing lock requests after a lock that is blocking a pending lock is removed - removed bogus brl_unlock() call in lock continue - corrected error code for LOCKING_ANDX_CHANGE_LOCKTYPE - expanded the lock cancel test suite to test lock cancel by unlock and by close - added a testsuite for LOCKING_ANDX_CHANGE_LOCKTYPE (This used to be commit 5ef80f034d4aa4dd6810532c63ad041bfc019cb8)
2007-10-10r3031: added support for lock cancelation, which effectively just triggers ↵Andrew Tridgell3-6/+58
an early lock timeout added support for more of the bizarre special lock offset semantics of w2k3 (This used to be commit d5bfc910b1200fb283e26572dc57fcf93652fd32)