1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-15 05:57:49 +03:00

118 Commits

Author SHA1 Message Date
Jeremy Allison
02c58f3fb9 Add chainlock_read functions to get a read lock. Used in *massively*
contended tdb's (and I've got one :-).
Jeremy.
(This used to be commit 064fa201ab73f476a168c40c2b227507e7342ec4)
2002-11-09 03:37:01 +00:00
Jeremy Allison
47955b2f6c Merge of scalable printing code fix... Needs testing.
Also tidied up some of Richard's code (I don't think he uses the compiler
flags -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual like
I do :-) :-).
Jeremy.
(This used to be commit 10024ed06e9d91f24fdc78d59eef2f76bf395438)
2002-11-07 02:38:42 +00:00
Jeremy Allison
9c94d1a2f7 Add a timeout to tdb_lock_bystring(). Ensure we never have more than
MAX_PRINT_JOBS in a queue.
Jeremy.
(This used to be commit bb58a08af459b4abae9d53ab98c15f40638ce52b)
2002-10-04 22:53:30 +00:00
Jeremy Allison
c60f6f066e Make explicit the difference between a tdb key with no data attached, and
a non existent entry. Stop a malloc(0) being called in the first case.
Jeremy.
(This used to be commit ece9507ec3d363fccf56b000ad9758780a9b3fb4)
2002-09-26 21:00:25 +00:00
Jeremy Allison
8b46126a07 Never, *ever* hold a mutex lock in the message database where there may
be traversals being attempted. Yes, this was from bitter experience (and
an out of control server :-). Also allow callers to break out of a tdb_chainlock
with sigalarm if desired.
Jeremy.
(This used to be commit a7781f91d8c1177210bffc199cd2f3b7ff993eaf)
2002-09-17 23:45:21 +00:00
Andrew Tridgell
a6ace770eb ensure that we unlock in case we hit a tdb error
(This used to be commit 4aa7dfb7e7f4ad33b8768d20ec2eb9cb3fde6385)
2002-08-30 06:56:12 +00:00
Andrew Tridgell
ae10baa5fc don't report the faiilure of non-blocking locks. They are supposed to
fail sometimes, thats why they are non-blocking :)
(This used to be commit 775b918b8c63b1fcd9a8db1743505ab718978c19)
2002-07-15 03:51:53 +00:00
Jeremy Allison
25148a148c *Experimental* new large-scaling printer code. Splits printing.tdb into
a separate tdb per printer, but only keeps (currently one) tdb open at
a time (although this is easily changed by changing a #define). Needs
scalability testing with large numbers of printers now....
Jeremy.
(This used to be commit b0909cfa14fc7ef29d2b98b56d52723570da782a)
2002-07-11 00:06:29 +00:00
Andrew Tridgell
c33cf24bcd auto-recover from the fairly common case of a non-clean tdb shutdown
while deleting a record. This leaves us with a non-free record on the
free list.
(This used to be commit e99b6a2b91e4022ce0a9a14415df71314b5e013f)
2002-05-22 01:32:12 +00:00
Jeremy Allison
dec3433303 Merge Herb's idmap endian fix.
Jeremy.
(This used to be commit 7ddad4061a1b7ed25e4d6471c7a1f8f97a98ed37)
2002-04-27 18:56:47 +00:00
Jeremy Allison
ca2e14ddc3 We cannot set errno=0 in any of the wrapper calls as this breaks UNIX error
returns to the client.
Jeremy.
(This used to be commit 1d66e53a64ec2878293e6d74a852b736ddab8f21)
2002-04-19 21:45:02 +00:00
Jeremy Allison
302b581ddc First cut at fix for the EINTR problem... More needs to be done I think.
Jeremy.
(This used to be commit 48475a7a697242b9fd7b1aec24389afb112569c4)
2002-04-19 02:08:52 +00:00
Jeremy Allison
4ad0ff29bf Added Shirish's client side caching policy change.
Jeremy.
(This used to be commit 16015c07eab2e57fa3771051e3e08fde21757cfa)
2002-04-10 01:04:13 +00:00
Simo Sorce
4f80466480 better check of called function's return
tdbtorture say it's ok
(This used to be commit af0fa4cf7c229fb908063bfcc3cbb214dae5ed0e)
2002-04-07 22:02:09 +00:00
Andrew Bartlett
d79e11ad6d Various comment fixes from Rafal Szczesniak <mimir@diament.ists.pwr.wroc.pl>
(This used to be commit 3bf4b42771d115500941be374bfdd9b8c2fdba4a)
2002-03-01 01:24:30 +00:00
Jeremy Allison
b06749d73c Memory leak on error condition fixed by Kian Win <codegrunt@rubbercookie.com>.
Jeremy.
(This used to be commit 9dae1398b45515e5b93de038ec18df297d73026d)
2002-02-27 17:48: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
a4bd608b48 Raise log level of warning produced when the open() of the tdb fails.
Sometimes an open error is OK.
(This used to be commit 5fb3be62910faf91e0e8381ba91f314f2092cb8e)
2002-01-22 00:38:36 +00:00
Jeremy Allison
d3e9213af7 Move SAFE_FREE into tdb.c to stop exporting it into tdb.h namespace.
Jeremy.
(This used to be commit 4f703b84cd7f258ae0169d52ca761b9404ccb348)
2002-01-09 18:26:39 +00:00
Jeremy Allison
4178f211d1 debug statement fixups.
Merge SAFE_FREE fix in tdb from 2.2, and IRIX fix.
Jeremy.
(This used to be commit eb6607466565bcd5b3800492d0bc1ae8a44da4f6)
2002-01-02 23:28:55 +00:00
Andrew Tridgell
84ecd95dba more irix -64 portability fixes
(This used to be commit 65e857b36e170e3ecd78bf6695ae73342e9c04cd)
2001-12-31 14:05:22 +00:00
Jeremy Allison
e0d3a9e443 Must check against -1 for fcntl error check.
Jeremy
(This used to be commit 1d2504b5c76bf23ac49a401adce8a49f193bc22c)
2001-12-13 02:34:43 +00:00
Jeremy Allison
9bb0a964bf Fix up warnings. Make tdb_openXX() names const.
Jeremy.
(This used to be commit 9e3581827d91f5fd33fabd5ad4c9a79d63355731)
2001-12-11 08:31:58 +00:00
Martin Pool
6f151481da Doc.
(This used to be commit 6c684c89a4e6e212476335ee57c3b616015598f8)
2001-12-10 07:29:34 +00:00
Martin Pool
ebc1f6fda3 Allow for internal databases which may have no name.
(This used to be commit caa08bb56e2dc533c3754f90f6139fe04a317545)
2001-12-10 07:27:20 +00:00
Martin Pool
dd9bdec3aa Log more error messages.
(This used to be commit 8118676f780a80662f28c3cc1a74cc12d0e1ef51)
2001-12-10 07:02:58 +00:00
Martin Pool
98d6d8cf9c Log more error messages.
(This used to be commit b50e566ab93e9a8068e26c9c902db81311cb394c)
2001-12-10 07:02:24 +00:00
Martin Pool
8c31fd48c8 Allocate tdb name up front in case log functions want to use it.
(This used to be commit a228c7efcc06b901ca51a6da77f8a52b77912f55)
2001-12-10 06:09:42 +00:00
Martin Pool
ddeecec1f8 tdb_open_ex: More cleanups: just dynamically allocate the TDB_CONTEXT
up front, rather than working on the stack and then copying across.
(This used to be commit b1d7d800680f77e02185bb237982b284414aac1e)
2001-12-10 05:29:47 +00:00
Martin Pool
dddef5d5b2 Refactor code to check whether already open into its own function.
(This used to be commit 52ef112e10dbe273b6e66c4a5081f468e4630b7d)
2001-12-10 05:22:04 +00:00
Martin Pool
77d800fb3e tdb_open_ex should always "goto fail" in case of error, rather than
just returning.  I don't think this would leak at the moment, but it's
an accident waiting to happen.
(This used to be commit fe901ec194d1b8ef94386b097e72508075eb8a54)
2001-12-10 05:12:52 +00:00
Martin Pool
70f27f1b52 Doc.
(This used to be commit bb6c0df4bc4eb8ce789886ec17e434dc27bb34b0)
2001-12-10 05:08:22 +00:00
Martin Pool
5fea33ab58 tdb_open_ex: Continue previous refactoring so that we consistently
just say "tdb" not "&tdb".
(This used to be commit fac685d30f58c25d73d1690ed008c797291558e4)
2001-12-10 05:05:21 +00:00
Martin Pool
ce654f5e55 tdb_open_ex: Refactor to use a pointer to tdb, rather than an auto
tdb, to be consistent with the rest of the code.
(This used to be commit d159415049c25caeaf01b6bc947da3472c54d1f8)
2001-12-10 05:00:36 +00:00
Martin Pool
84c19504d0 Put back changes to set errno, which seem to do no harm.
(This used to be commit 3dbb5dfcfb29671f136d1ed6c865362eaf027446)
2001-12-04 13:21:15 +00:00
Martin Pool
84503c81f0 undo
(This used to be commit fc176f15f27686049453552219b56b9de33ceffa)
2001-12-04 11:41:12 +00:00
Martin Pool
28e676d9c3 Implement suggestion from tridge to leave the old tdb_open interface
as it was, and add tdb_open_ex() which takes a log callback.  I guess
this makes more sense since it's a public interface.
(This used to be commit 391a65395e6cdc0300f81eb1072a3366cacd1203)
2001-12-04 11:25:44 +00:00
Martin Pool
7d9e09f527 Better error handling:
- tdb_open api changed so that you now pass an error handling
   callback when opening the file, so that errors detected during
   opening have somewhere to go.  (All calls from the body of Samba to
   this function go through a wrapper in tdbutil, which has been
   updated.)

 - Clean up logic for deciding how to open tdb.  Emit log messages if
   something goes wrong (e.g. bad magic.)

 - tdbtool now logs errors to stderr.
(This used to be commit 0aa800618eab1043d802c04fb1d125cd07936769)
2001-12-04 07:40:25 +00:00
Martin Pool
6c3163cc97 Set errno in tdb_open in cases where we detect an error in opening the
database, but no underlying system call sets errno.

The particular case I had was a mangled .tdb, but there are others.
For this one, set EIO.  It's a shame Unix messages aren't more
detailed -- "bad data format" would be better.
(This used to be commit 5630a988be05c21b60aba6304d4aaadce6024817)
2001-12-04 02:58:42 +00:00
Tim Potter
e91226daea Removed #ifdef TDB_DEBUG around tdb_dump_all() and tdb_printfreelist()
so that tdbtool can be compiled without having to make clean.
(This used to be commit dad688d8c6b3c98173a846ad833599a4016d2e1a)
2001-11-09 01:26:13 +00:00
Jeremy Allison
d96f052603 Don't core dump when using spinlocks on a read-only tdb. Unfortunately this
means that a read-write opener and a read-only opener are using different
locking mechanisms - this needs to be addressed, but it's hard as the
read-write opener using the spinlocks is usually first, so there's no
way to force them to change down to the fcntl method.
Read only access is less important anyway and can never corrupt the
tdb anyway, so errors in read-only record reads are more tolerable.
Jeremy
(This used to be commit 21f776df5932e024a0d1fef9097377d35b5cf511)
2001-10-16 22:10:23 +00:00
Jeremy Allison
754c2feee7 Fix for tdb_oob() on TDB_INTERNAL databases.
Jeremy.
(This used to be commit 2b135fba625191a13e4110c68531a0e6d5fb373d)
2001-10-12 00:01:35 +00:00
Jeremy Allison
3a17bab00f Ensure accessing NT member servers works with a Samba PDC. Don't
change these timestamp settings without good reason.
Remove CLEAR_IF_FIRST flag is tdb is read-only.
Jeremy.
(This used to be commit a71d9d98b013a6c30fd85524b7cdc929bdbd9bcb)
2001-10-03 22:58:37 +00:00
Jeremy Allison
0ef1acbabb Put pwrite code back in expand_file.
Jeremy.
(This used to be commit a3267551d88dffb226e4a1c3852fe9c817517d02)
2001-09-19 06:55:25 +00:00
Andrew Tridgell
2bc9ef3846 added a hook to reopen all tdb's after the server fork
this prevents the fd seek pointer problem
(This used to be commit f49518e497deeb46292456c3650769d50ec2a955)
2001-09-19 05:43:15 +00:00
Jeremy Allison
af0d86a9fc Fix based on Andrew's insight as re-using a tdb after fork means
parent and child share seek pointer. Damn....
Jeremy.
(This used to be commit 0e75c0fc1aa742fb0c29716c99a81cf5b33ef6e6)
2001-09-19 03:33:47 +00:00
Jeremy Allison
e9479e8d8a Return correct error code on lock fail in tdb_expand.
Jeremy.
(This used to be commit b45793ec3f6ff04587bee8f463ef6410b06097d6)
2001-09-19 00:02:28 +00:00
Jeremy Allison
a27509937c Roll back earlier fix after talking with Andrew. The write_lock_record and
unlock are explicitly non-blocking. I will add a comment to this effect later.
Jeremy.
(This used to be commit e4b41a8f31729dfec92c4cb1f8b4759446cac0ff)
2001-09-18 22:59:12 +00:00
Jeremy Allison
c64cd552c4 Fixed a couple of nasty bugs only easily seen with no mmap. Firstly,
map_ptr not neccessarily set to NULL if no mmap, secondly, iterating
through a tdb was using SETLK, instead of SETLKW - would almost never
fail with mmap as the time holding the lock was so short, but was
easily seen with read/write. One finaly bug needs tracking down w.r.t.
traversal......
Jeremy.
(This used to be commit 313c2e8652092a307165b6039dd7dfbbd0754ec3)
2001-09-18 21:17:58 +00:00
Jeremy Allison
3538c8bea9 Added mmap fix to pass lock test from HP.
Ok - now we're no longer trying to reach a silly 1k loc target,
change the formatting to be *readable* - eg.
change if (x) y else z to be :
if (x)
    y
else
    z

and other compact sillyness. Oh look - when I did this I found
some areas where we *WEREN'T CHECKING SYSTEM CALL ERROR RETURNS !!!!*
CompSci 101 guys....... :-).
Jeremy.
(This used to be commit 38d2e6983a6be8232ae7ce21a950d69dd95ce3e6)
2001-08-02 20:17:40 +00:00