summaryrefslogtreecommitdiff
path: root/source4/ntvfs/posix/vfs_posix.c
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r14540: fix a talloc hierachie problem,Stefan Metzmacher1-5/+29
make sure file and search handles are cleaned up before anything else in the pvfs_state struct, as there destructors reply on a valid pvfs_state struct metze (This used to be commit aaa5d377b9b6145a83c0e686c7fbb7b561ae8988)
2007-10-10r14464: Don't include ndr_BASENAME.h files unless strictly required, insteadJelmer Vernooij1-1/+1
try to include just the BASENAME.h files (containing only structs) (This used to be commit 3dd477ca5147f28a962b8437e2611a8222d706bd)
2007-10-10r14456: don't access the smbsrv_tcon inside the ntvfs modulesStefan Metzmacher1-14/+13
metze (This used to be commit 5709c1c4e1a561dd9af98cfefbbbdac9b18765b7)
2007-10-10r14173: change smb interface structures to always useStefan Metzmacher1-2/+3
a union smb_file, to abtract - const char *path fot qpathinfo and setpathinfo - uint16_t fnum for SMB - smb2_handle handle for SMB2 the idea is to later add a struct ntvfs_handle *ntvfs so that the ntvfs subsystem don't need to know the difference between SMB and SMB2 metze (This used to be commit 2ef3f5970901b5accdb50f0d0115b5d46b0c788f)
2007-10-10r14157: - pass a struct ntvfs_request to the ntvfs layerStefan Metzmacher1-8/+7
(for now we just do #define ntvfs_request smbsrv_request, but it's the first step...) - rename ntvfs_openfile() -> ntvfs_open() - fix the talloc hierachie in some places in the ntvfs_map_*() code metze (This used to be commit ed9ed1f48f602354810937c0b0de850b44322191)
2007-10-10r13924: Split more prototypes out of include/proto.h + initial work on headerJelmer Vernooij1-0/+2
file dependencies (This used to be commit 122835876748a3eaf5e8d31ad1abddab9acb8781)
2007-10-10r13099: allow shares that point to /Andrew Tridgell1-1/+3
(This used to be commit ac4b8b98392cba69d0d06bce8e9023769ee301d8)
2007-10-10r12019: - let us only reference libblkid stuff in one fileStefan Metzmacher1-3/+0
- and make it it bit simpler, by caching the GUID struct instead of the device name - and this also removes all compiler warnings... metze (This used to be commit f4f0d626e00116e85a91962bf8534c1fbb69334c)
2007-10-10r8535: no longer rely on seekdir working after a closedir. Instead, keepAndrew Tridgell1-0/+3
directories open, but close search states based on an inactivity timer, with a default of a 5 minute timeout (This used to be commit 2e8d154e7dfb9b320a1344e957a39e96e1eefadd)
2007-10-10r7795: use a share specific allocation roundingAndrew Tridgell1-1/+2
(This used to be commit 9adacb0d1620d4cfadd515239b853977cf03a719)
2007-10-10r7792: make the allocation size rounding in pvfs configurableAndrew Tridgell1-0/+3
(This used to be commit 1f35642bed1129d0834906b3e94e8868992d6eb9)
2007-10-10r7557: trigger a probe at tconx time to see if xattrs are really supported byAndrew Tridgell1-0/+5
the filesystem (This used to be commit 71e281ae2fe2ce169aeb09f72376a60d28845808)
2007-10-10r6599: Fix formating using 'linux' C styleAlexander Bokovoy1-0/+3
Fix memory handling for blkid caches which need to be cleared when session is done. (This used to be commit c623cc60541f747f0a801eb77d97bb0a3bb6956f)
2007-10-10r5501: check the return of talloc with the NT_STATUS_HAVE_NO_MEMORY()Stefan Metzmacher1-15/+9
macro... metze (This used to be commit 9ec6c0e97765e60ef195296f17d6a27b5d0dcca9)
2007-10-10r5296: - only include the tdb headers where they are neededAndrew Tridgell1-0/+1
- removed the u32 hack in events.c as I think this was only needed as tdb.h defines u32. Metze, can you check that this hack is indeed no longer needed on your suse system? (This used to be commit 6f79432fe656164d4770dbce114a30dda5e7bf9a)
2007-10-10r5102: This is a major simplification of the logic for controlling top levelAndrew Tridgell1-4/+5
servers in smbd. The old code still contained a fairly bit of legacy from the time when smbd was only handling SMB connection. The new code gets rid of all of the smb_server specific code in smbd/, and creates a much simpler infrastructures for new server code. Major changes include: - simplified the process model code a lot. - got rid of the top level server and service structures completely. The top level context is now the event_context. This got rid of service.h and server.h completely (they were the most confusing parts of the old code) - added service_stream.[ch] for the helper functions that are specific to stream type services (services that handle streams, and use a logically separate process per connection) - got rid of the builtin idle_handler code in the service logic, as none of the servers were using it, and it can easily be handled by a server in future by adding its own timed_event to the event context. - fixed some major memory leaks in the rpc server code. - added registration of servers, rather than hard coding our list of possible servers. This allows for servers as modules in the future. - temporarily disabled the winbind code until I add the helper functions for that type of server - added error checking on service startup. If a configured server fails to startup then smbd doesn't startup. - cleaned up the command line handling in smbd, removing unused options (This used to be commit cf6a46c3cbde7b1eb1b86bd3882b953a2de3a42e)
2007-10-10r5037: got rid of all of the TALLOC_DEPRECATED stuff. My apologies for theAndrew Tridgell1-1/+1
large commit. I thought this was worthwhile to get done for consistency. (This used to be commit ec32b22ed5ec224f6324f5e069d15e92e38e15c0)
2007-10-10r4728: split up server_services into:Stefan Metzmacher1-4/+4
- stream_socket services the smb, ldap and rpc service which sets up a srtam socket end then waits for connections and - task services which this you can create a seperate task that do something (this is also going through the process_model subsystem so with -M standard a new process for this created with -M thread a new thread ... I'll add datagram services later when we whave support for datagram sockets in lib/socket/ see the next commit as an example for service_task's metze (This used to be commit d5fa02746c6569b09b6e05785642da2fad3ba3e0)
2007-10-10r4464: added pvfs backend support for the special CREATOR_OWNER and ↵Andrew Tridgell1-0/+4
CREATOR_GROUP inheritance rules (This used to be commit 0a29fb45c310b4b8c348d187b8ff1833deaac6c3)
2007-10-10r4423: give lp_parm_int() and lp_parm_ulong() default valuesStefan Metzmacher1-7/+1
metze (This used to be commit c44f4d44b51789916e50c9da93046d0a15245edc)
2007-10-10r4242: added support for storing xattrs in a tdb. This allows all advanced NTAndrew Tridgell1-0/+16
attributes (streams, EAs, NT ACLs, timestamps etc) to be used on filesystems that don't support xattrs. It also allows for large streams, although they are very inefficient. I won't enable this by default, as I really wrote it as a way of testing large stream support while still using ext3, but perhaps with a bit more work this could be generally usable. To enable this use: posix:eadb = /home/test/myeas.tdb (This used to be commit 0c927d912cb65754351189d3a0442004a14aa5c6)
2007-10-10r3990: take advantage of the uid->sid and gid->sid code to create a muchAndrew Tridgell1-0/+5
better default NT ACL in pvfs (This used to be commit 9ff6ecbdb6c08528193f7958d7ea7d9a8df6defd)
2007-10-10r3983: posix:fakeoplocks should default to False, not True !Andrew Tridgell1-1/+1
(This used to be commit 052d91c59f177851b5e0e53c8a033bdd28702f64)
2007-10-10r3939: - added "posix:fakeoplocks" option for testing with oplocks forced onAndrew Tridgell1-0/+4
- added support for sticky write times after a setfileinfo, by using a write_time field in the DosAttrib xattr structure. (This used to be commit 4a52fae82d8305e999f94f1947daa21dab54cdfd)
2007-10-10r3832: added NT ACL query/set to the posix NTVFS backend. The default ACL isAndrew Tridgell1-0/+3
based on the current nttoken, which is completely wrong, but works as a start. The ACL is stored in the xattr system.DosAcl, using a NDR encoded IDL union with a version number to allow for future expansion. pvfs does not yet check the ACL for file access. At the moment the ACL is just query/set. We also need to do some RPC work to allow the windows ACL editor to be used. At the moment is queries the ACL fine, but displays an error when it fails to map the SIDs via rpc. (This used to be commit 3a1f20d874ab2d8b2a2f2485b7a705847abf1263)
2007-10-10r3799: - added the bit for FS_ATTR_NAMED_STREAMS support into qfsinfo ↵Andrew Tridgell1-0/+10
filesystem attribute reply - pvfs passes the RAW-STREAMS test (This used to be commit c1a48a7542a52df734b54031f405d574e4c891e3)
2007-10-10r3747: - added some of the infrastructure needed for streams support in pvfsAndrew Tridgell1-2/+1
(the IDL, and the load/save meta-data logic) - changed pvfs_resolve_name() to default to non-wildcard, needing PVFS_RESOLVE_WILDCARD to enable wildcards. Most callers don't want wildcards, so defaulting this way makes more sense. - fixed deletion of EAs (This used to be commit e7afd4403cc1b7e0928776929f8988aa6f15640b)
2007-10-10r3737: - Get rid of the register_subsystem() and register_backend() functions.Jelmer Vernooij1-2/+2
- Re-disable tdbtool (it was building fine on my Debian box but other machines were having problems) (This used to be commit 0d7bb2c40b7a9ed59df3f8944133ea562697e814)
2007-10-10r3615: split out struct pvfs_file_handle from struct pvfs_file. This is inAndrew Tridgell1-1/+0
preparation for adding code to pass the BASE-DENY1 and BASE-DENYDOS tests, which require a shared filesystem handle for some specific combinations of two DENY_DOS opens on the same connection. (This used to be commit 6e4fdf01d19051e3923d7703dbf990fc1722b09a)
2007-10-10r3545: initial support for using extended attributes to hold extended dos ↵Andrew Tridgell1-1/+5
attributes of files. I decided to use IDL/NDR to encode the attribute, as it gives us a simple way to describe and extend the saved attributes. The xattr code needs to hook into quite a few more places in the pvfs code, but this at least gets the basics done. I will start encoding alternate data streams streams, DOS EAs etc soon using the same basic mechanism. I'll probably stick to "version 1" for the xattr.idl for quite a while even though it will be changing, as I don't expect anyone to be deploying this in production just yet. Once we have production users we will need to keep compatibility by supporting all the old version numbers in xattr.idl. (This used to be commit c54253ed1b7dce1d14f43e747da61089aea87094)
2007-10-10r3532: make sharing violation delay in pvfs configurable with ↵Andrew Tridgell1-0/+7
"posix:sharedelay = usecs" (This used to be commit c4758776491e5ed9f5b8c387226d1e75bc70eb2e)
2007-10-10r3528: added support for the SMBntcancel() operation, which cancels anyAndrew Tridgell1-0/+1
outstanding async operation (triggering an immediate timeout). pvfs now passes the RAW-MUX test (This used to be commit 3423e2f41461d054067ef168b9b986f62cc8f77c)
2007-10-10r3461: another place where "open" was used as a structure elementAndrew Tridgell1-1/+1
(This used to be commit 1087ea830e7aead86d54a1836512e88554afc919)
2007-10-10r3288: - updated the path processing in pvfs to pass the RAW-CHKPATH test. ThisAndrew Tridgell1-1/+2
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-10r3253: - added rudimentary support for ntioctl in pvfsAndrew Tridgell1-9/+6
- 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-10r3227: added a per-share option "case insensitive filesystem", that tells theAndrew Tridgell1-0/+1
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-10r3161: pvfs now passes the RAW-SEEK testAndrew Tridgell1-20/+0
(This used to be commit a953d4a42c8fa3fe930c319d5157fc406a1035da)
2007-10-10r3127: added the initial code for the open files database. Doesn't doAndrew Tridgell1-0/+8
anything yet, but will soon be the core of the shares modes code. (This used to be commit ad1edabf95c6c331aac4f0caa7d31193e26bc176)
2007-10-10r3056: added a id -> pointer data structure (a type of radix tree). This isAndrew Tridgell1-2/+13
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 Tridgell1-0/+1
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-10r3029: implemented byte range lock timeouts.Andrew Tridgell1-1/+2
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-15/+13
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)
2007-10-10r2941: added pvfs_flush() implementation to the posix backendAndrew Tridgell1-10/+1
(This used to be commit dac00ef3b0d0f8467367d7b6ff77db7b63a042cc)
2007-10-10r2927: imported the hash2 name mangling code from Samba3 into Samba4, butAndrew Tridgell1-0/+6
heavily modified to suit the Samba4 architecture. Samba4 with posix backend now passes the BASE-MANGLE test (This used to be commit ed52d69e8a065b6a8df2fb73c89be67acfdbca65)
2007-10-10r2800: removed the warning about using the posix ntvfs handler, as it is nowAndrew Tridgell1-2/+0
considerably more complete than the simple handler (This used to be commit e6ecd31be8e91f552d891c41b2f8737519a490a1)
2007-10-10r2751: this is a new ntvfs design which tries to solve:Stefan Metzmacher1-14/+24
- the stacking of modules - finding the modules private data - hide the ntvfs details from the calling layer - I set NTVFS_INTERFACE_VERSION 0 till we are closer to release (because we need to solve some async problems with the module stacking) metze (This used to be commit 3ff03b5cb21bb79afdd3b1609be9635f6688a539)
2007-10-10r2660: - converted the libcli/raw/ library to use talloc_increase_ref_count()Andrew Tridgell1-9/+1
rather than manual reference counts - properly support SMBexit in the cifs and posix backends - added a logoff method to all backends With these changes the RAW-CONTEXT test now passes against the posix backend (This used to be commit c315d6ac1cc40546fde1474702a6d66d07ee13c8)
2007-10-10r2654: fixed some more server memory leaks. We are now down to a single leakAndrew Tridgell1-1/+1
of 16 bytes, caused by the 16 byte data_blob in the smb_signing code. (This used to be commit 2f1b788e09686e065d22f621f5c0c585192c6740)
2007-10-10r2561: completely redid the ntvfs module chaining code, You can now do ↵Andrew Tridgell1-4/+6
something like: ntvfs handler = nbench posix and the nbench pass-thru module will be called before the posix module. The chaining logic is now much saner, and less racy, with each level in the chain getting its own private pointer rather than relying on save/restore logic in the pass-thru module. The only pass-thru module we have at the moment is the nbench one (which records all traffic in a nbench compatibe format), but I plan on soon writing a "unixuid" pass-thru module that will implement the setegid()/setgroups()/seteuid() logic for standard posix uid handling. This separation of the posix backend from the uid handling should simplify the code, and make development easier. I also modified the nbench module so it can do multiple chaining, so if you want to you can do: ntvfs module = nbench nbench posix and it will save 2 copies of the log file in /tmp. This is really only useful for testing at the moment until we have more than one pass-thru module. (This used to be commit f84c0af35cb54c8fdc4933afefc18fa4c062aae4)
2007-10-10r2524: a simple pvfs rename implementation to make testing easierAndrew Tridgell1-10/+0
(This used to be commit 98c1c75076fdb0df3a7c616f8c2e1ed138a6ff9a)