summaryrefslogtreecommitdiffstats
path: root/source3/locking
Commit message (Collapse)AuthorAgeFilesLines
* This patch looks bigger than it is. It does 2 things. 1). Renames smbpid -> ↵Jeremy Allison2010-05-072-41/+41
| | | | | | smblctx in our locking code. 2). Widens smblctx to 64-bits internally. Preparing to use the SMB2 handle as the locking context. Jeremy.
* Make us pass all SMB2 lock tests except MULTIPLE-UNLOCK and CONTEXT. Them ↵Jeremy Allison2010-05-071-2/+3
| | | | | | next :-). Jeremy.
* Fix SMB2 lock tests up to cancel-by-close.Jeremy Allison2010-05-061-0/+4
| | | | Jeremy.
* Move to MS-FSA algorithm when checking for invalid lock range.Jeremy Allison2010-05-051-7/+6
| | | | | | Satisfies SMB and SMB2. Jeremy.
* s3: only include gen_ndr headers where needed.Günther Deschner2010-05-062-0/+2
| | | | | | | | | | | | | | | | | This shrinks include/includes.h.gch by the size of 7 MB and reduces build time as follows: ccache build w/o patch real 4m21.529s ccache build with patch real 3m6.402s pch build w/o patch real 4m26.318s pch build with patch real 3m6.932s Guenther
* smbd: move printfile_offset() within write_file()Simo Sorce2010-04-301-0/+6
|
* Move to using 64-bit mid values in our internal open file database.Jeremy Allison2010-04-121-7/+8
| | | | | | | This will allow us to share logic much easier between SMB1 and SMB2 servers. Jeremy
* We don't need to treat the token differently in the conn->admin_user case, ↵Jeremy Allison2010-03-151-11/+0
| | | | | | it should already be pointing to a token with uid == 0. Jeremy.
* Rever e80ceb1d7355c8c46a2ed90d5721cf367640f4e8 "Remove more uses of "extern ↵Jeremy Allison2010-03-151-0/+10
| | | | | | | | struct current_user current_user;"." As requested by Volker, split this into smaller commits. Jeremy.
* Remove more uses of "extern struct current_user current_user;".Jeremy Allison2010-03-121-10/+0
| | | | | | | | | | | | | Use accessor functions to get to this value. Tidies up much of the user context code. Volker, please look at the changes in smbd/uid.c to familiarize yourself with these changes as I think they make the logic in there cleaner. Cause smbd/posix_acls.c code to look at current user context, not stored context on the conn struct - allows correct use of these function calls under a become_root()/unbecome_root() pair. Jeremy.
* s3: Fix a long-standing problem with recycled PIDsVolker Lendecke2010-03-102-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a samba server process dies hard, it has no chance to clean up its entries in locking.tdb, brlock.tdb, connections.tdb and sessionid.tdb. For locking.tdb and brlock.tdb Samba is robust by checking every time we read an entry from the database if the corresponding process still exists. If it does not exist anymore, the entry is deleted. This is not 100% failsafe though: On systems with a limited PID space there is a non-zero chance that between the smbd's death and the fresh access, the PID is recycled by another long-running process. This renders all files that had been locked by the killed smbd potentially unusable until the new process also dies. This patch is supposed to fix the problem the following way: Every process ID in every database is augmented by a random 64-bit number that is stored in a serverid.tdb. Whenever we need to check if a process still exists we know its PID and the 64-bit number. We look up the PID in serverid.tdb and compare the 64-bit number. If it's the same, the process still is a valid smbd holding the lock. If it is different, a new smbd has taken over. I believe this is safe against an smbd that has died hard and the PID has been taken over by a non-samba process. This process would not have registered itself with a fresh 64-bit number in serverid.tdb, so the old one still exists in serverid.tdb. We protect against this case by the parent smbd taking care of deregistering PIDs from serverid.tdb and the fact that serverid.tdb is CLEAR_IF_FIRST. CLEAR_IF_FIRST does not work in a cluster, so the automatic cleanup does not work when all smbds are restarted. For this, "net serverid wipe" has to be run before smbd starts up. As a convenience, "net serverid wipedbs" also cleans up sessionid.tdb and connections.tdb. While there, this also cleans up overloading connections.tdb with all the process entries just for messaging_send_all(). Volker
* s3-locking: convert brlock to TYPESAFE_QSORT()Andrew Tridgell2010-02-141-3/+2
|
* s3-locking: update to use DLIST_ADD_AFTER()Andrew Tridgell2010-02-101-5/+1
| | | | (cherry picked from commit 6c6df527e14514027cbcaa6deac25adf04363926)
* Fix bug #6876 - Delete of an object whose parent folder does not have delete ↵Jeremy Allison2010-01-121-0/+3
| | | | | | | | | | rights fails even if the delete right is set on the object. Final fix for the vfs_acl_xattr and vfs_acl_tdb code. Ensure we can delete a file even if the underlying POSIX permissions don't allow it, if the Windows permissions do. Jeremy.
* Make Samba3 pass the RAW-LOCK test as Windows.Jeremy Allison2009-12-041-0/+5
| | | | | | | Implement the win7 NT_STATUS_INVALID_LOCK_RANGE. Make smbd behave as Windows does in canceling locks. Jeremy.
* Remove unneeded argument from can_set_delete_on_close(). EnsureJeremy Allison2009-12-021-9/+2
| | | | | | can_set_delete_on_close() is correctly called before any setting of the disposition bit (clean up the do_unlink() call). Jeremy.
* s3: Remove a pointless memsetVolker Lendecke2009-11-211-1/+0
| | | | | We are assigning the complete structure now (we used to assign individual fields), so this is obsolete.
* s3: Cache brlock.tdb entries for the fast read&write strict locking code pathVolker Lendecke2009-11-212-15/+65
| | | | | For a netbench run this gains around 2% user-space CPU, fetching a 100MB file takes around 4% less.
* s3: Remove debug_ctx()Volker Lendecke2009-11-032-7/+7
| | | | | | | | smbd just crashed on me: In a debug message I called a routine preparing a string that itself used debug_ctx. The outer routine also used it after the inner routine had returned. It was still referencing the talloc context that the outer debug_ctx() had given us, which the inner DEBUG had already freed.
* Fix bug 6776 - Running overlapping Byte Lock test will core dump Samba daemon.Jeremy Allison2009-10-051-148/+219
| | | | | Re-write core of POSIX locking logic. Jeremy.
* s3:smbd: Add the ntstatus to the smb_panic in share_mode_lock_destructorVolker Lendecke2009-09-071-2/+18
| | | | This might help finding why bug 6518 happens
* Make the smbd VFS typesafeVolker Lendecke2009-07-242-0/+46
|
* s3: Change fsp->fsp_name to be an smb_filename struct!Tim Prouty2009-07-203-29/+41
|
* s3: Change the share_mode_lock struct to store a base_name and stream_nameTim Prouty2009-07-081-29/+64
|
* s3: Make some arguments to (parse|unparse)_share_modes() constTim Prouty2009-07-081-2/+2
|
* s3: Remove unnecessary const qualifiersTim Prouty2009-07-071-2/+1
|
* s3 sticky write time: Removed unused args and tighten up a function by ↵Tim Prouty2009-07-061-1/+2
| | | | making an arg const
* Fix Coverity ID 897: REVERSE_INULLVolker Lendecke2009-05-061-1/+1
|
* Use procid_str in debug messages for better cluster-debuggabilityVolker Lendecke2009-04-031-2/+2
|
* Fix a scary "fill_share_mode_lock failed" messageVolker Lendecke2009-03-261-1/+2
| | | | | | | To me "fill_share_mode_lock failed" is a "can't happen" alert. There is however a perfectly valid case in get_file_infos() when the file is not open. Change the corresponding debug message to level 10 and explain more.
* s3: Add strict lock/unlock calls to the vfs layer to replace is_lockedDave Richards2009-03-131-35/+55
|
* Last part of fix for #6154 - zfs does not honor admin users.Jeremy Allison2009-03-051-4/+15
| | | | Jeremy.
* s3 BRL: Add more clarifying comments and add implied logic to make ↵Zack Kirsch2009-02-201-2/+6
| | | | conditional more clear
* s3: Add extid to the dev/inode pairTim Prouty2009-02-191-3/+3
| | | | | | | | | | | This extends the file_id struct to add an additional generic uint64_t field: extid. For backwards compatibility with dev/inodes stored in xattr_tdbs and acl_tdbs, the ext id is ignored for these databases. This patch should cause no functional change on systems that don't use SMB_VFS_FILE_ID_CREATE to set the extid. Existing code that uses the smb_share_mode library will need to be updated to be compatibile with the new extid.
* s3: Fix uninitialized variable warning (and bug).Zack Kirsch2009-02-131-2/+0
|
* Add VFS ops for Windows BRL: Lock, Unlock and Cancel:Zack Kirsch2009-02-132-52/+95
| | | | | | | | | | | | | | | | | | | | | | | This patch adds 3 new VFS OPs for Windows byte range locking: BRL_LOCK_WINDOWS, BRL_UNLOCK_WINDOWS and BRL_CANCEL_WINDOWS. Specifically: * I renamed brl_lock_windows, brl_unlock_windows and brl_lock_cancel to *_default as the default implementations of the VFS ops. * The blocking_lock_record (BLR) is now passed into the brl_lock_windows and brl_cancel_windows paths. The Onefs implementation uses it - future implementations may find it useful too. * Created brl_lock_cancel to do what brl_lock/brl_unlock do: set up a lock_struct and call either the Posix or Windows lock function. These happen to be the same for the default implementation. * Added helper functions: increment_current_lock_count() and decrement_current_lock_count(). * Minor spelling correction in brl_timeout_fn: brl -> blr. * Changed blocking_lock_cancel() to return the BLR that it has cancelled. This allows us to assert its the lock that we wanted to cancel. If this assert ever fires, this path will need to take in the BLR to cancel, rather than choosing on its own. * Adds a small helper function: find_blocking_lock_record_by_id(). Used by the OneFS implementation, but could be useful for others.
* Fix an uninitialized variable. Tim, please check!Volker Lendecke2009-02-101-1/+1
|
* s3 oplocks: Make the level2 oplock contention API more granularTim Prouty2009-02-091-11/+74
| | | | | | | | | | | | | | | | | | This replaces release_level2_oplocks_on_change with contend_level2_oplock_begin/end in order to contend level2 oplocks throughout an operation rather than just at the begining. This is necessary for some kernel oplock implementations, and also lays the groundwork for better correctness in Samba's standard level2 oplock handling. The next step for non-kernel oplocks is to add additional state to the share mode lock struct that prevents any new opens from granting oplocks while a contending operation is in progress. All operations that contend level 2 oplocks are now correctly spanned except for aio and synchronous writes. The two write paths both have non-trivial error paths that need extra care to get right. RAW-OPLOCK and the rest of 'make test' are still passing with this change.
* Fix more asprintf warnings and some error path errors.Jeremy Allison2008-12-231-7/+6
| | | | Jeremy.
* Fix bug #5979 - Level 2 oplocks being granted improperly,Jeremy Allison2008-12-171-1/+10
| | | | Jeremy.
* s3: [3/3]: Fix a delete on close divergence from windows and the associated ↵Tim Prouty2008-12-091-45/+1
| | | | | | | torture test This third patch cleans up by removing all of the code that is made obsolete by the first patch. It should cause no functional changes.
* Use {u,}int64_t instead of SMB_BIG_{U,}INT.Jelmer Vernooij2008-10-142-26/+26
|
* Fix debug message to show correct function name.Jeremy Allison2008-09-051-1/+1
| | | | | Jeremy. (This used to be commit 079c75ef3c169c7a5d81bcaa0b70b6e0df2c464d)
* Write times code update.Jeremy Allison2008-09-051-5/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ok, here's the fix for the write times breakage with the new tests in S4 smbtorture. The key is keeping in the share mode struct the "old_file_time" as the real write time, set by all the write and allocation calls, and the "changed_write_time" as the "sticky" write time - set by the SET_FILE_TIME calls. We can set them independently (although I kept the optimization of not setting the "old_file_time" is a "changed_write_time" was already set, as we'll never see it. This allows us to update the write time immediately on the SMBwrite truncate case, SET_END_OF_FILE and SET_ALLOCATION_SIZE calls, whilst still have the 2 second delay on the "normal" SMBwrite, SMBwriteX calls. I think in a subsequent patch I'd like to change the name of these from "old_file_time" to "write_time" and "changed_write_time" to "sticky_write_time" to make this clearer. I think I also fixed a bug in Metze's original code in that once a write timestamp had been set from a "normal" SMBwriteX call the fsp->update_write_time_triggered variable was set and then never reset - thus meaning the write timestamp would never get updated again on subsequent SMBwriteX's. The new code checks the update_write_time_event event instead, and doesn't update is there's an event already scheduled. Metze especially, please check this over for your understanding. Jeremy. (This used to be commit 6f20585419046c4aca1f7d6c863cf79eb6ae53b0)
* Fix alignment problems on sparc, bug 5512Volker Lendecke2008-07-091-19/+20
| | | | | | Patch successfully tested by Christoph Kaegi <kaph@zhaw.ch>, thanks. (cherry picked from commit 9f8df16f476c49da85000b7365c8a6e33b8b71fc) (This used to be commit 82ed19ff64fc815a8ca9fbd7d3331671ecf5d12b)
* Allow server manager to close open files selected by id.Jeremy Allison2008-05-271-1/+1
| | | | | Jeremy. (This used to be commit 7eeed8bb41059ec2bddedb6a71deddeec7f33af2)
* Remove the "stat_open()" function, flag, and all associated code. It was onlyJeremy Allison2008-05-021-4/+0
| | | | | | | | being (correctly) used in the can_read/can_write checks for hide unreadable/unwritable and this is more properly done using the functions in smbd/file_access.c. Preparing to do NT access checks on all file access. Jeremy. (This used to be commit 6bfb06ad95963ae2acb67c4694a98282d3b29faa)
* Slight reformatting of fd_close_posix(), while I'm at it.Michael Adam2008-04-211-5/+9
| | | | | | | Wrap lines and remove trailing space. Michael (This used to be commit 74ed53a115b2063d4d5c8572af8f1302bc658882)
* Change fd_close_posix() to return int instead of NTSTATUS.Michael Adam2008-04-211-12/+4
| | | | | | | The errno is handed up through the VFS layer to the callers. Michael (This used to be commit d928e6648d61cf2d3c1b77db440efb835b729a84)
* Don't modify the fsp in fd_close_posix() anymore.Michael Adam2008-04-211-4/+0
| | | | | | | | | Now that it is inside the vfs layer, this function should not alter the fsp (i.e. set fsp->fh->fd = -1) anymore. That belongs above the vfs layer. Michael (This used to be commit df264bf3e00d7d77afcf55e54d2669b9ffa9af4a)