summaryrefslogtreecommitdiff
path: root/source3/locking/locking.c
AgeCommit message (Collapse)AuthorFilesLines
2011-03-30s3-messages: make ndr_messaging.h part of messages.h.Günther Deschner1-1/+0
Guenther
2011-03-30s3-messages: only include messages.h where needed.Günther Deschner1-0/+1
Guenther
2011-03-30s3-locking: move locking prototypes out of proto.h.Günther Deschner1-0/+1
Will later become part of locking.h Guenther
2011-03-30s3-includes: only include system/filesys.h when needed.Günther Deschner1-0/+1
Guenther
2011-03-17Nulling out the op_mid is never the right thing to do. We depend onJeremy Allison1-1/+0
this value when searching for specific share mode entries. Jeremy. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Thu Mar 17 19:59:51 CET 2011 on sn-devel-104
2011-03-02s3-server_id: only include server_id where needed.Günther Deschner1-0/+1
Guenther
2011-03-01s3-auth struct security_unix_token replaces UNIX_USER_TOKENAndrew Bartlett1-11/+11
2011-01-26Missed one debug printf of name_hash. Ensure always use %x.Jeremy Allison1-2/+2
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Wed Jan 26 00:46:28 CET 2011 on sn-devel-104
2011-01-25Fix bug #7863 - Unlink may unlink wrong file when hardlinks are involved.Jeremy Allison1-93/+239
Do this by keeping a linked list of delete on close tokens, one for each filename that identifies a path to the dev/inode. Use the jenkins hash of the pathname to identify the correct token.
2011-01-25Add uint32_t name_hash argument (currently unused) to get_file_infos().Jeremy Allison1-0/+1
Will be used when we store more than one delete on close token.
2011-01-25Add name_hash into the share mode entry struct (as yet only use for renames ↵Jeremy Allison1-2/+15
to identify a specific path).
2010-10-12libcli/security Provide a common, top level libcli/security/security.hAndrew Bartlett1-0/+1
This will reduce the noise from merges of the rest of the libcli/security code, without this commit changing what code is actually used. This includes (along with other security headers) dom_sid.h and security_token.h Andrew Bartlett Autobuild-User: Andrew Bartlett <abartlet@samba.org> Autobuild-Date: Tue Oct 12 05:54:10 UTC 2010 on sn-devel-104
2010-09-27Change to using TDB_INCOMPATIBLE_HASH (the jenkins hash) on allJeremy Allison1-1/+1
TDB_CLEAR_IF_FIRST tdb's. For tdb's like gencache where we open without CLEAR_IF_FIRST and then with CLEAR_IF_FIRST if corrupt this is still safe to use as if opening an existing tdb the new hash will be ignored - it's only used on creating a new tdb not opening an old one. Jeremy.
2010-08-26s3-build: use dbwrap.h only where needed.Günther Deschner1-0/+1
Guenther
2010-08-07s3: Remove smbd_messaging_context() from send_stat_cache_delete_message()Volker Lendecke1-1/+2
2010-07-05s3: Remove procid_self() from fill_deferred_open_entry()Volker Lendecke1-6/+9
2010-07-05s3: Remove procid_self() from do_lock_cancel()Volker Lendecke1-1/+1
2010-07-05s3: Remove procid_self() from do_unlock()Volker Lendecke1-1/+1
2010-07-05s3: Remove procid_self() from do_lock()Volker Lendecke1-1/+1
2010-07-05s3: Remove procid_self() from query_lock()Volker Lendecke1-1/+1
2010-07-05s3: Remove procid_self() from fill_share_mode_entry()Volker Lendecke1-1/+1
2010-07-05s3: Remove procid_self() from init_strict_lock_struct()Volker Lendecke1-1/+2
2010-05-07This patch looks bigger than it is. It does 2 things. 1). Renames smbpid -> ↵Jeremy Allison1-15/+15
smblctx in our locking code. 2). Widens smblctx to 64-bits internally. Preparing to use the SMB2 handle as the locking context. Jeremy.
2010-05-07Make us pass all SMB2 lock tests except MULTIPLE-UNLOCK and CONTEXT. Them ↵Jeremy Allison1-2/+3
next :-). Jeremy.
2010-05-06s3: only include gen_ndr headers where needed.Günther Deschner1-0/+1
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
2010-04-30smbd: move printfile_offset() within write_file()Simo Sorce1-0/+6
2010-04-12Move to using 64-bit mid values in our internal open file database.Jeremy Allison1-7/+8
This will allow us to share logic much easier between SMB1 and SMB2 servers. Jeremy
2010-03-15We don't need to treat the token differently in the conn->admin_user case, ↵Jeremy Allison1-11/+0
it should already be pointing to a token with uid == 0. Jeremy.
2010-03-15Rever e80ceb1d7355c8c46a2ed90d5721cf367640f4e8 "Remove more uses of "extern ↵Jeremy Allison1-0/+10
struct current_user current_user;"." As requested by Volker, split this into smaller commits. Jeremy.
2010-03-12Remove more uses of "extern struct current_user current_user;".Jeremy Allison1-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.
2010-03-10s3: Fix a long-standing problem with recycled PIDsVolker Lendecke1-1/+1
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
2010-01-12Fix bug #6876 - Delete of an object whose parent folder does not have delete ↵Jeremy Allison1-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.
2009-12-02Remove unneeded argument from can_set_delete_on_close(). EnsureJeremy Allison1-9/+2
can_set_delete_on_close() is correctly called before any setting of the disposition bit (clean up the do_unlink() call). Jeremy.
2009-11-21s3: Cache brlock.tdb entries for the fast read&write strict locking code pathVolker Lendecke1-10/+8
For a netbench run this gains around 2% user-space CPU, fetching a 100MB file takes around 4% less.
2009-11-03s3: Remove debug_ctx()Volker Lendecke1-6/+6
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.
2009-09-07s3:smbd: Add the ntstatus to the smb_panic in share_mode_lock_destructorVolker Lendecke1-2/+18
This might help finding why bug 6518 happens
2009-07-20s3: Change fsp->fsp_name to be an smb_filename struct!Tim Prouty1-12/+17
2009-07-08s3: Change the share_mode_lock struct to store a base_name and stream_nameTim Prouty1-29/+64
2009-07-08s3: Make some arguments to (parse|unparse)_share_modes() constTim Prouty1-2/+2
2009-07-07s3: Remove unnecessary const qualifiersTim Prouty1-2/+1
2009-07-06s3 sticky write time: Removed unused args and tighten up a function by ↵Tim Prouty1-1/+2
making an arg const
2009-05-06Fix Coverity ID 897: REVERSE_INULLVolker Lendecke1-1/+1
2009-03-26Fix a scary "fill_share_mode_lock failed" messageVolker Lendecke1-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.
2009-03-13s3: Add strict lock/unlock calls to the vfs layer to replace is_lockedDave Richards1-35/+55
2009-03-05Last part of fix for #6154 - zfs does not honor admin users.Jeremy Allison1-4/+15
Jeremy.
2009-02-19s3: Add extid to the dev/inode pairTim Prouty1-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.
2009-02-13s3: Fix uninitialized variable warning (and bug).Zack Kirsch1-2/+0
2009-02-13Add VFS ops for Windows BRL: Lock, Unlock and Cancel:Zack Kirsch1-33/+48
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.
2008-12-17Fix bug #5979 - Level 2 oplocks being granted improperly,Jeremy Allison1-1/+10
Jeremy.
2008-12-09s3: [3/3]: Fix a delete on close divergence from windows and the associated ↵Tim Prouty1-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.