diff options
author | Jeremy Allison <jra@samba.org> | 2001-08-10 20:49:46 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-08-10 20:49:46 +0000 |
commit | 41837701e4f67d2f8e5436714a7083cb2688abbb (patch) | |
tree | 1b5eb99bb68bae9b9cb2f700bfba780ddd69f19c /source/locking/locking.c | |
parent | 9675de08c4a38f0be670918b8222b73ca2ca4ab1 (diff) | |
download | samba-41837701e4f67d2f8e5436714a7083cb2688abbb.tar.gz samba-41837701e4f67d2f8e5436714a7083cb2688abbb.tar.xz samba-41837701e4f67d2f8e5436714a7083cb2688abbb.zip |
Added Mike Davidsons Tru64 ACL patch.
Jeremy.
Diffstat (limited to 'source/locking/locking.c')
-rw-r--r-- | source/locking/locking.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/source/locking/locking.c b/source/locking/locking.c index ea9f8b48ba9..b6b563b4e5f 100644 --- a/source/locking/locking.c +++ b/source/locking/locking.c @@ -359,18 +359,35 @@ static TDB_DATA locking_key_fsp(files_struct *fsp) return locking_key(fsp->dev, fsp->inode); } +#ifndef LOCK_SHARE_ENTRY_SPIN_COUNT +#define LOCK_SHARE_ENTRY_SPIN_COUNT 100 +#endif + /******************************************************************* Lock a hash bucket entry. ******************************************************************/ + BOOL lock_share_entry(connection_struct *conn, SMB_DEV_T dev, SMB_INO_T inode) { +#if 1 /* JRATEST */ + int count = 0; + for (count = 0; count < LOCK_SHARE_ENTRY_SPIN_COUNT; count++) + if (tdb_chainlock(tdb, locking_key(dev, inode)) == 0) + return True; + else + DEBUG(0,("lock_share_entry: locking (%d) for dev = %x, inode = %.0f failed with error %s\n", + count, (unsigned int)dev, (double)inode, strerror(errno) )); + return False; +#else return tdb_chainlock(tdb, locking_key(dev, inode)) == 0; +#endif } /******************************************************************* Unlock a hash bucket entry. ******************************************************************/ + void unlock_share_entry(connection_struct *conn, SMB_DEV_T dev, SMB_INO_T inode) { @@ -383,7 +400,18 @@ void unlock_share_entry(connection_struct *conn, ******************************************************************/ BOOL lock_share_entry_fsp(files_struct *fsp) { +#if 1 /* JRATEST */ + int count = 0; + for (count = 0; count < LOCK_SHARE_ENTRY_SPIN_COUNT; count++) + if (tdb_chainlock(tdb, locking_key(fsp->dev, fsp->inode)) == 0) + return True; + else + DEBUG(0,("lock_share_entry_fsp: locking (%d) for dev = %x, inode = %.0f failed with error %s\n", + count, (unsigned int)fsp->dev, (double)fsp->inode, strerror(errno) )); + return False; +#else return tdb_chainlock(tdb, locking_key(fsp->dev, fsp->inode)) == 0; +#endif } /******************************************************************* |