1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-26 23:18:57 +03:00

47 Commits

Author SHA1 Message Date
Herb Lewis
ed1f7121a3 r6502: add LOCKING debug class - pull PRINTINGDB class definition from trunk
so our numbers don't get out of sync
(This used to be commit 58e307664e02ebf0415f19ed625d2f166d9cb1cc)
2007-10-10 10:56:43 -05:00
Jeremy Allison
8dddd763d8 r5634: Fix 64-bit overflow problems found by BlueArc torture tester.
We still have a few strange bugs with 64-bit locking values. I will
get traces.
Jeremy.
(This used to be commit ff4c201d93e1f59ce61e9341f7f94ce92389ed7b)
2007-10-10 10:55:51 -05:00
Jeremy Allison
695188cc26 r4108: As check_self is *always* False in every invokation, remove the
logic for it. We still pass Samba4 RAW-LOCK test.
Jeremy.
(This used to be commit 596f23051363f8cc8896119b3eca0663a61a38c3)
2007-10-10 10:53:34 -05:00
Jeremy Allison
acf9d61421 r4088: Get medieval on our ass about malloc.... :-). Take control of all our allocation
functions so we can funnel through some well known functions. Should help greatly with
malloc checking.
HEAD patch to follow.
Jeremy.
(This used to be commit 620f2e608f70ba92f032720c031283d295c5c06a)
2007-10-10 10:53:32 -05:00
Jeremy Allison
8c1c918c94 r3050: Steal from Samba4 :-). Make us pass most of the new lock tests (except for
the cancel lock which I have to add).
Jeremy.
(This used to be commit cf7f89999e0c6becd4617c812400d1e71b9c0a30)
2007-10-10 10:52:59 -05:00
Andrew Tridgell
b0202c7b85 r3008: when checking for the existance of a lock we are only doing a single
tdb call, so there is no need to get the chainlock. This reduces the
number of tdb locking calls made on file IO
(This used to be commit 78e904c27b31d7123b521c446247d6ff558c84cc)
2007-10-10 10:52:59 -05:00
Gerald Carter
386a11f49e r1011: fix bad merge (from a few months ago) and ensure that we always use tdb_open_log() instead of tdb_open_ex()
(This used to be commit e65564ab4aa1240e84b8d272510aa770cad0ed0e)
2007-10-10 10:51:53 -05:00
Gerald Carter
df6d2db4ce merge from old APP_HEAD
* remove corrupt tdb and shutdown (only for printing tdbs, connections,
  sessionid & locking)
* decrement smbd counter in connections.tdb in smb_panic()
* various Makefile hack to get things to link

'max smbd processes' looks like it might be broken.  The counter KEY is not
being set.  Will look into that tomorrow.
(This used to be commit 6e22c5da929b6d9a4e32dc704c83112b2ad8fcfd)
2004-02-12 05:24:02 +00:00
Jeremy Allison
22c0241571 Changes to allow Samba3 to pass the Samba4 RAW-READ tests.
Jeremy.
(This used to be commit e7565dbba696adbb0fd8cca6b86a1a7e5a655f2e)
2003-10-09 01:46:01 +00:00
Jeremy Allison
34226f1bd4 Fix for very subtle POSIX lock interaction race condition found by
Herb. We need to unlock POSIX locks before notifying pending lock
processes.
Jeremy.
(This used to be commit 6999eef51c3e597b3b2cd9cc26138acdfbb6a23a)
2003-04-04 20:38:12 +00:00
Jeremy Allison
fb3e4b8797 Fix to allow blocking lock notification to be done rapidly (no wait
for smb -> smb lock release). Adds new PENDING_LOCK type to lockdb
(does not interfere with existing locks).
Jeremy.
(This used to be commit 766928bbba1e597c9c2b12458dd8d37e6080593e)
2003-02-27 01:04:34 +00:00
Jeremy Allison
285a3b0ef8 When checking is_locked() new WRITE locks conflict with existing READ locks even
if the context is the same. See LOCKTEST7 in smbtorture.
Jeremy.
(This used to be commit 1698092ba5a169de369ad1182a6f270de174c3f5)
2003-02-22 01:09:57 +00:00
Andrew Tridgell
e90b652848 updated the 3.0 branch from the head branch - ready for alpha18
(This used to be commit 03ac082dcb375b6f3ca3d810a6a6367542bc23ce)
2002-07-15 10:35:28 +00:00
Andrew Tridgell
be389e25dd this attempts to handle the rather bizarre lock cache semantics in
w2k. It isn't entirely accurate, but its close
(This used to be commit e02d7364707c4939efa4ff0ddf9b6d4f48e5d411)
2002-03-10 23:17:07 +00:00
Andrew Tridgell
d160b35240 accept the 0/0 lock but don't treat it in any sort of special way
(This used to be commit 8f7bf38de16a1f5316aa6a413fb697c43862c4c6)
2002-03-05 19:54:45 +00:00
Tim Potter
cd68afe312 Removed version number from file header.
Changed "SMB/Netbios" to "SMB/CIFS" in file header.
(This used to be commit 6a58c9bd06d0d7502a24bf5ce5a2faf0a146edfa)
2002-01-30 06:08:46 +00:00
Tim Potter
dc1fc3ee8e Removed 'extern int DEBUGLEVEL' as it is now in the smb.h header.
(This used to be commit 2d0922b0eabfdc0aaf1d0797482fef47ed7fde8e)
2001-10-02 04:29:50 +00:00
Simo Sorce
81fdc3c3f7 move to SAFE_FREE()
(This used to be commit e61aec84edaf55b9ee087b076d2f1311033dc839)
2001-09-17 04:16:35 +00:00
Andrew Tridgell
9a9ac2739b got rid of USE_TDB_MMAP_FLAG as its not needed any more
(This used to be commit c26e0d3f27a05ecc8bd2390f9aab7f9451524e47)
2001-09-06 22:08:19 +00:00
Andrew Tridgell
9ef7a6c786 use NTSTATUS not BOOL in do_lock()
(This used to be commit b1b2a5fa5d084dad8ae47777419ab75db1e51eff)
2001-09-06 01:19:35 +00:00
Andrew Tridgell
e8e98c9ea0 converted smbd to use NTSTATUS by default
major changes include:

- added NSTATUS type
- added automatic mapping between dos and nt error codes
- changed all ERROR() calls to ERROR_DOS() and many to ERROR_NT()
  these calls auto-translate to the client error code system
- got rid of the cached error code and the writebmpx code

We eventually will need to also:
- get rid of BOOL, so we don't lose error info
- replace all ERROR_DOS() calls with ERROR_NT() calls

but that is too much for one night
(This used to be commit 83d9896c1ea8be796192b51a4678c2a3b87f7518)
2001-08-27 08:19:43 +00:00
Jeremy Allison
10c240ef97 Don't use CLEAR_IF_FIRST if opening read-only.
Jeremy.
(This used to be commit f5ba19c12989dd1e996473869468afcfc5dce72e)
2001-08-26 19:27:18 +00:00
Andrew Tridgell
c1598db18e we now have all but the dreaded 0/0 lock working
(This used to be commit 98b6aef18c793187f392f944af516c8b9ebf86e9)
2001-08-24 21:09:38 +00:00
Simo Sorce
2e783a4707 this is a big global fix for the ptr = Realloc(ptr, size) bug.
many possible mem leaks, and segfaults fixed.

someone should port this fix to 2.2 also.
(This used to be commit fa8e55b8b465114ce209344965c1ca0333b84db9)
2001-08-12 17:30:01 +00:00
Jeremy Allison
996719cce2 Added "use mmap" for HPUX.
Jeremy.
(This used to be commit 840802f10677cb0009cb4df4c37c7d01aa5edacd)
2001-07-30 22:21:31 +00:00
Jeremy Allison
d1f38ac531 Fixed the first locking error (test #8 found by locktest code from
Clarion locktest.
Jeremy.
(This used to be commit 5c42845b5bb6fafd0ebf93fbdd23d9bf861da865)
2001-06-30 01:59:48 +00:00
Andrew Tridgell
05fc3e578c use LDSHFLAGS not -shared in several places
(This used to be commit 8ec9c87b5d1a7dae17d5b1a30f58effaf5e69e4b)
2001-06-04 05:13:59 +00:00
Jeremy Allison
840fb1643d Stupid typo. Should be if (!tdb).
Jeremy.
(This used to be commit d3496897f167a8deb1d0034797e8b29f2c51acef)
2001-05-23 18:33:45 +00:00
Jeremy Allison
faa0bef196 Defensive brlock and locking database cleaning code.
Jeremy.
(This used to be commit d7aa42e4593b02ee6e487f7a4633bd7e7620ef2f)
2001-05-22 20:35:48 +00:00
Jeremy Allison
da3053048c Merge of new 2.2 code into HEAD (Gerald I hate you :-) :-). Allows new SAMR
RPC code to merge with new passdb code.
Currently rpcclient doesn't compile. I'm working on it...
Jeremy.
(This used to be commit 0be41d5158ea4e645e93e8cd30617c038416e549)
2001-03-11 00:32:10 +00:00
Jeremy Allison
7e4c4721b4 Changed to sourceforge tdb code. This includes spinlocks (so we now have
a --with-spinlocks option to configure, this does mean the on-disk tdb
format has changed, so 2.2alphaX sites will need to re-create their
tdb's. The upside is no more tdb fragmentation and a +5% on netbench.
Swings and roundabouts....
Jeremy.
(This used to be commit 9dea7b7c257db487f8ced7dad3fce92fba03ea91)
2000-12-06 00:05:15 +00:00
Jeremy Allison
ac4d277561 Fix from John Reilly for equivalence tests.
Jeremy.
(This used to be commit b456274a7ba22d512bab5ede979cd9363398825b)
2000-11-17 23:10:56 +00:00
Andrew Tridgell
33179a95d8 add some brackets
(This used to be commit bf67721ef5cc6d5ad1762fca320ef612025b4593)
2000-06-13 15:46:15 +00:00
Herb Lewis
e522de4808 Using a structure for a tdb key can lead to insideous, hard
to find bugs. On 64 bit IRIX, structure packing means that
a
struct {
SMB_DEV_T dev /* 4 bytes */
SMB_INO_T ino /* 8 bytes */
}

has 4 bytes of padding between the two members. If you
don't null the memory before using it as a tdb key,
you randomly can't find keys depending on what is in
the padding. This caused me immense pain and was hard
to track down.... :-)

Jeremy.
(This used to be commit f2a5ba3f0939f59097f0ef6a25f1cf9b5574f157)
2000-05-10 00:05:27 +00:00
Jeremy Allison
6d9ce38306 Fix for uninitialized memory read in brlock code. brl_locktest now needs
to correctly set the fnum, as the brl_conflict code looks at it.
Jeremy.
(This used to be commit df87259a356b91989604a10b3691480dcd16cf3f)
2000-05-05 20:50:22 +00:00
Jeremy Allison
8c19fa8f7a Fix based on Elrond's code to reduce the store size on removing dead records.
Jeremy.
(This used to be commit 09e92a61a966d09f543ba541ddb3240cc4718579)
2000-05-03 20:33:25 +00:00
Andrew Tridgell
c6230f6431 - clear dead locks at startup
- fixed a bug which caused lock records to not decrease in size
(This used to be commit 51624a3a2f5a4ac55b4f26f572a2fc399f9c808e)
2000-05-03 14:29:05 +00:00
Jeremy Allison
20ce61ccc8 Fix for stacking locks in brlock and POSIX. Windows only allows a read lock
to overlay a write lock on the same fnum. When overlaying read locks onto
a write lock, the number of locks is counted, and the first unlock removes
the write lock and downgrades this to a read lock. Do the same when mapping
to POSIX.
Jeremy.
(This used to be commit 74d42644e6e52808037975e909aa56c850838b76)
2000-05-03 02:27:41 +00:00
Jeremy Allison
9a5eb068ab Ok - this is the *third* implementation of this (third time's the charm :-).
This implementation keeps all POSIX lock records in a separate in memory
tdb database only known about in locking/posix.c. In addition, the pending
close fd's are also held in a tdb which has an array of fd's indexed by
device and inode.

The walk-split code uglyness has been moved to posix.c from brlock.c,
which is the only place that needs to know about it, and the extra
functions hacked into brlock to expose internal state have been removed.

This implementation passes smbtorture locktest4, the only thing I need
to check now for completeness is what to do about lock upgrade/downgrades
which Win32 allows under some *very* strange circumstances.

Jeremy.
(This used to be commit 3f655de1c764b9ee1472a111621d4317f19f624d)
2000-04-28 20:54:23 +00:00
Jeremy Allison
4b60a33c6f Ok - this is more subtle than it looks :-).
When a file is being closed, once it passes the fnum and tid tests then
the locking context should be ignored when removing all locks. This is
what is done in the brl close case, but when you have outstanding
POSIX locks, then you cannot remove all the brl locks in one go, you
have to get the lock list and call do_unlock individually. As this
uses global_smbpid as the locking context, you need to make sure
that this is set correctly for the specific lock being removed. I
now do this by storing the smbpid in each entry in the unlock list returned from
the query call. I removed the smbpid from fsp (not needed) and
things seem ok (even with the stupid smbpid tricks that smbtorture plays :-).

Jeremy.
(This used to be commit 6baa96bb466915cc17e8cbad50254d6bd47b967b)
2000-04-27 23:28:56 +00:00
Jeremy Allison
36db78feda Fixed subtle unlocking bug when a file is closed. We need to store the
smbpid used when a file was opened in the files_struct. Else we use
the wrong global_smbpid when we are closing the file and trying to
remove the brl locks - this causes the brl locks to be left when the
file is closed as the samba_context check fails.
Jeremy.
(This used to be commit 2746e5602e493e5b022764b4b839eb4d2f14363b)
2000-04-27 22:23:04 +00:00
Jeremy Allison
e4d382750c Added the hard code :-).
HEAD should now map brl locks correctly into POSIX locks, including the
really nasty case of large range unlock.

There is a lot of pretty ASCII art in locking/brlock.c explaining
exactly how this code works. If it is unclear, please ask me.

Jeremy.
(This used to be commit 135855dbd3b8934a49229b81646cd4469acba926)
2000-04-25 20:30:58 +00:00
Luke Leighton
bbe275e95b 1) added void* state argument to tdb_traverse. guess what! there were
two places i found where it was appropriate to _use_ that third argument,
in locking.c and brlock.c!  there was a static traverse_function and
i removed the static variable, typecast it to a void*, passed it to
tdb_traverse and re-cast it back to the traverse_function inside the
tdb_traverse function.  this makes the use of tdb_traverse() reentrant,
which is never going to happen, i know, i just don't like to see
statics lying about when there's no need for them.

as i had to do in samba-tng, all uses of tdb_traverse modified to take
the new void* state argument.

2) disabled rpcclient: referring people to use SAMBA_TNG rpcclient.
i don't know how the other samba team members would react if i deleted
rpcclient from cvs main.  damn, that code's so old, it's unreal.
20 rpcclient commands, instead of about 70 in SAMBA_TNG.
(This used to be commit 49d7f0afbc1c5425d53019e234d54ddf205c8e9a)
2000-02-04 04:59:31 +00:00
Andrew Tridgell
54e1176ba1 added code to allow traversal of the byte range lock database
this is used with "smbstatus -B" to dump the lock list
(This used to be commit 5f022629146701e6d543f77007dc944e4277ab0c)
2000-01-16 11:14:44 +00:00
Andrew Tridgell
7bc1cc7e07 damn, Solaris already has a "enum lock_type"
changed it to "enum brl_type"
(This used to be commit 6b9ee7662c7afa70f6b20889e6b0ae1dcd677f9f)
2000-01-14 08:01:44 +00:00
Andrew Tridgell
82af221e4a we now pass all byte range locking tests
the last piece was to use a smb timeout slightly larger than the
locking timeout in bloking locks to prevent a race
(This used to be commit 1b54cb4a33a65e62c2e3189b78ef073869a60c75)
2000-01-14 04:32:57 +00:00
Andrew Tridgell
6c2a1fdf36 the bulk of the new byte range locking coode
it doesn't map to posix locks yet, that will come later.
(This used to be commit 7f2a493095887cb0aae915ac36b9cded71d3a7a7)
2000-01-13 12:09:36 +00:00