summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Use ZERO_STRUCTPVolker Lendecke2010-02-131-1/+1
|
* s3: Fix a typoVolker Lendecke2010-02-131-1/+1
|
* s3: Fix a C++ warningVolker Lendecke2010-02-131-1/+1
|
* s4-smbd: fix crash in notify code on client terminationAndrew Tridgell2010-02-131-2/+2
| | | | | | | | We need to free the lp_ctx after we free the event context, otherwise the teardown code in the notify backend dies when it tries to use the iconv_convenience ptr Fixes bug 7053
* s4-rpc: be more careful about DCERPC auth paddingAndrew Tridgell2010-02-136-137/+107
| | | | | | Cope with a wider range of auth padding in dcerpc bind_ack and alter_context packets. We now use a helper function that calculates the right auth padding.
* s4: use LDB_TYPESAFE_QSORT() instead of ldb_qsort()Andrew Tridgell2010-02-136-16/+8
|
* s4-ldb: added LDB_TYPESAFE_QSORT()Andrew Tridgell2010-02-131-0/+18
| | | | Like TYPESAFE_QSORT() but for the ldb_qsort() function
* s4-wrepl: use TYPESAFE_QSORT() in wins repl codeAndrew Tridgell2010-02-131-1/+2
|
* s4-torture: use TYPESAFE_QSORT() in smbtortureAndrew Tridgell2010-02-134-26/+15
|
* s4-rpcserver: use TYPESAFE_QSORT() in rpc serversAndrew Tridgell2010-02-133-24/+19
|
* s4-ntvfs: use TYPESAFE_QSORT() in notify codeAndrew Tridgell2010-02-131-3/+2
|
* s4-socket: use TYPESAFE_QSORT() in netif codeAndrew Tridgell2010-02-131-1/+2
|
* s4-auth: use TYPESAFE_QSORT() in gensecAndrew Tridgell2010-02-131-1/+2
|
* s4-dsdb: use TYPESAFE_QSORT() in dsdb codeAndrew Tridgell2010-02-137-52/+28
|
* tdb: use fdatasync() instead of fsync() in transactionsAndrew Tridgell2010-02-131-1/+1
| | | | This might help on some filesystems
* libreplace: add fdatasync() if not availableAndrew Tridgell2010-02-132-1/+5
|
* util: added TYPESAFE_QSORT() macroAndrew Tridgell2010-02-131-0/+38
| | | | | This makes it much harder to get the type of a qsort comparison function wrong.
* tdb: Apply some const, just for clarityVolker Lendecke2010-02-131-1/+1
|
* Use sec_initial_uid() in the places where being root doesn't matter,Jeremy Allison2010-02-125-5/+5
| | | | | | and 0 in the places where it does. Jeremy
* Simplify the logic in make_connection_snum(), and make it match Windows ↵Jeremy Allison2010-02-121-41/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | behavior. Cause all exit paths to go through one place, where all cleanup is done. change_to_root_user() for pathname operations that should succeed if the path exists, even if the connecting user has no access. For example, a share can now be defined with a path of /root/only/access (where /root/only/access is a directory path with all components only accessible to root e.g. root owned, permissions 700 on every component). Non-root users will now correctly connect, but get ACCESS_DENIED on all activities (which matches Windows behavior). Previously, non-root users would get NT_STATUS_BAD_NETWORK_NAME on doing a TConX to this share, even though it's a perfectly valid share path (just not accessible to them). This change was inspired by the research I did for bug #7126, which was reported by bepi@adria.it. As this is a change in a core function, I'm proposing to leave this only in master for 3.6.0, not back-port to any existing releases. This should give us enough time to decide if this is the way we want this to behave (as Windows) or if we prefer the previous behavior. Jeremy.
* Fix warning messages on compile in g_lock.c Volker & Michael please check.Jeremy Allison2010-02-121-14/+4
| | | | Jeremy.
* Fix error in docs. Should be milliseconds, not microseconds.Jeremy Allison2010-02-121-1/+1
|
* s3/smbd: change locking behavior when "lock spin time = 0".Steven Danneman2010-02-122-7/+16
| | | | | | | | | | | | | | | | | | | | | The "lock spin time" parameter mimics the following Windows setting which by default is 250ms in Windows and 200ms in Samba. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\LockViolationDelay When a client sends repeated, non-blocking, contending BRL requests to a Windows server, after the first Windows starts treating these requests as timed blocking locks with the above timeout. As an efficiency, I've changed the behavior when this setting is 0, to skip this logic and treat all requests as non-blocking locks. This gives the smbd server behavior similar to the 3.0 release with the do_spin_lock() implementation. I've also changed the blocking lock parameter in the call from push_blocking_lock_request() to true as all requests made in this path are blocking by definition.
* Remove #if SOFTLINK_OPTIMIZATION code.Jeremy Allison2010-02-121-17/+0
| | | | | | This hasn't been turned on or been capable of doing so for many years now. Makes this jumbo function smaller... Jeremy.
* Revert "Fix bug #7126 - [SMBD] With access denied error smbd return wrong ↵Jeremy Allison2010-02-121-16/+9
| | | | | | | | | | | NT_STATUS_OBJECT_PATH_INVALID error" This reverts commit 2fdd8b10c6abadd27c579e772c0482214d2363a5. This fix is incorrect. The original code works as desired, I made a mistake here. Jeremy.
* Fix bug #7126 - [SMBD] With access denied error smbd return wrong ↵Jeremy Allison2010-02-121-9/+16
| | | | | | | | | | | | NT_STATUS_OBJECT_PATH_INVALID error As tridge's comment says, we should be ignoring ACCESS_DENIED on the share path in a TconX call, instead allowing the mount and having individual SMB calls fail (as Windows does). The original code erroneously caught SMB_VFS_STAT != 0 and errored out on that. Jeremy.
* packaging(RHEL-CTDB): adapt configure.rpm to match the spec-file configure callMichael Adam2010-02-121-1/+2
| | | | Michael
* v3-4-ctdb: Do not do any logrotationVolker Lendecke2010-02-121-5/+2
|
* s3:registry: eliminate race condition in creating/scanning sorted subkeysMichael Adam2010-02-121-0/+17
| | | | | | | | | | | | | | Called, from key_exists, scan_sorted_subkeys re-creates the sorted subkeys record of the given key and then searches through it. The race is that between creation and parsing of the sorted subkey record, another process that stores some other subkey of the same parent key will delete the sorted subkey record, resulting in an WERR_BADFILE of an operation that should actually succeed. This patch fixes the issue by wrapping the creation and parsing into a transaction. Michael
* s3:make "net conf addshare" atomic by wrapping all writes in one transactionMichael Adam2010-02-121-6/+36
| | | | Michael
* s3:g_lock: remove a nested event loop, replacing the inner loop by selectMichael Adam2010-02-121-38/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This made smbd crash in g_lock_lock() when trying to start a transaction on a db with an already started transaction, e.g. in a tcon_and_X where the share_info.tdb was not yet initialized but share_info.tdb was already locked by another process or writing acces to the winreg rpc pipe where the registry tdb was already locked by another process. What we really _want_ to do here by design is to react to MSG_DBWRAP_G_LOCK_RETRY messages that are either sent by a client doing g_lock_unlock or by ourselves when we receive a CTDB_SRVID_SAMBA_NOTIFY or CTDB_SRVID_RECONFIGURE message from ctdbd, i.e. when either a client holding a lock or a complete node has died. Doing this properly involves calling tevent_loop_once(), but doing this here with the main ctdbd messaging context creates a nested event loop when g_lock_lock() is called from the main event loop. So as a quick fix, we act a little corasely here: we do a select on the ctdb connection fd and when it is readable or we get EINTR, then we retry without actually parsing any ctdb packages or dispatching messages. This means that we retry more often than necessary and intended by design, but this does not harm and it is unobtrusive. When we have finished, the main loop will pick up all the messages and ctdb packets. The only extra twist is that we cannot use timed events here but have to handcode a timeout for select. Michael
* s3:ctdb_conn: add ctdbd_conn_get_fd() to get the fd out of the ctdb connectionMichael Adam2010-02-122-0/+7
| | | | Michael
* s3:g_lock: remove an unreached code path.Michael Adam2010-02-121-4/+0
| | | | Michael
* s3:dbwrap_ctdb: fix reading/storing of special key __db_sequence_number__Michael Adam2010-02-121-4/+2
| | | | | | | The key for reading and writing was inconsistent due to a off by one data length. Michael
* s3:dbwrap_ctdb: exit early when nothing has been written in transaction_commit.Michael Adam2010-02-121-5/+9
| | | | | | | | | | | This skips update of the __db_sequence_number__ record when nothing else has been written. There are transactions that are just openend and then nothing is written until transaction_commit is called. This is for instance the case with registry initialization routines: They start a transaction and only write somthing when the registry has not been initialized yet. So this change will skip many db_seqnum bumps and TRANS3_COMMIT roundtrips. Michael
* s3:dbwrap_ctdb: fix brown paperbag bug in ctdb_transaction_commit.Michael Adam2010-02-121-1/+1
| | | | | | | | I carefully prepared the return value only to "return 0;" at the bottom. :-( This may well have hit us for instance in the nested cancel case and produced random errors. Michael
* s3:dbwrap_ctdb: fix logic error in pull_newest_from_marshall_buffer().Michael Adam2010-02-121-1/+5
| | | | | | | | | | | The logic bug was that if a record was found in the marshall buffer, then always the ctdb header of tha last record in the marshall buffer was returned, and not the ctdb header of the last occurrence of the requested record. This is fixed by introducing an additional temporary variable. Michael
* s3:dbwrap_ctdb: fix an uninitialized variable.Michael Adam2010-02-121-1/+1
| | | | Michael
* s3:dbwrap_ctdb: fix two "may be used uninitialized" warningsMichael Adam2010-02-121-0/+3
| | | | Michael
* s3:dbwrap_ctdb: fix db_ctdb_fetch_db_seqnum_from_db() when NT_STATUS_NOT_FOUND.Michael Adam2010-02-121-1/+5
| | | | | | Don't treat this as an error but return seqnum 0 instead. Michael
* s3:dbwrap: If "-n" is given to dbwrap_torture, open db with CLEAR_IF_FIRSTVolker Lendecke2010-02-121-0/+4
|
* s3:build: remove checks for deprecated ctdb controls.Michael Adam2010-02-121-35/+1
| | | | Michael
* s3:dbwrap_ctdb: maintain a database sequence number that bumps in transactionsMichael Adam2010-02-121-5/+116
| | | | | | | | | | | | | | | | | | | | | | For persistent databases, 64bit integer is kept in a special record __db_sequence_number__. This record is incremented with each completed transaction. The retry mechanism for failing TRANS3_COMMIT controls inside the db_ctdb_transaction_commit() function now relies one a modified behaviour of ctdbd's treatment of persistent databases in recoveries. Recently, a special treatment for persistent databases had been introduced in ctdb (1.0.108) to work around the problems with the orinal design of persistent transactions. Now with the rewrite we need to revert to the old behaviour that ctdb always takes the newest copies of all records. This change also paves the way for a next step, which will make recovery use the db seqnum to tell which node has the newest copy of a persistent db and use that node's copy. This will greatly reduce the amount of data transferred with each recovery. Michael
* s3:dbwrap_ctdb: change db_ctdb_transaction_store() to return NTSTATUS.Michael Adam2010-02-121-18/+12
| | | | | | | The return values calculated by the callers were wrong anyways since the new marshalling code does not set the local tdbs tdb error code. Michael
* s3:dbwrap_ctdb: update (C)Michael Adam2010-02-121-1/+2
| | | | Michael
* build: Add a configure check for CTDB_CONTROL_TRANS3_COMMIT.Michael Adam2010-02-121-0/+17
| | | | | | | This is the new implementation of ctdb transactions using the global lock feature. It is needed by the current dbwrap_ctdb code. Michael
* s3: Add tdb_data_equalVolker Lendecke2010-02-122-0/+9
|
* s3:torture: add a test LOCAL-DBTRANS to torture dbwrap with transactions.Volker Lendecke2010-02-121-0/+130
|
* s3:dbwrap_ctdb: start rewrite of transactions using the global lock (g_lock)Michael Adam2010-02-121-320/+160
| | | | | | | | | | | | | | | | This simplifies the transaction code a lot: * transaction_start essentially consists of acquiring a global lock. * No write operations at all are performed on the local database until the transaction is committed: Every store operation is just going into the marshall buffer. * The commit operation calls a new simplified TRANS3_COMMIT control in ctdb which rolls out thae changes to all nodes including the node that is performing the transaction. Michael
* s3: setup debug for smbtortureVolker Lendecke2010-02-121-0/+2
|