summaryrefslogtreecommitdiff
path: root/source3/lib/gencache.c
Commit message (Collapse)AuthorAgeFilesLines
* tdb2: tdb_parse_record() returns negative errors, not -1.Rusty Russell2011-06-201-2/+2
| | | | | | | Fixup callers to tdb_parse_record() to be compatible with tdb2. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb2: #ifdef out TDB_ERR_NOLOCK and TDB_ERR_LOCK_TIMEOUT.Rusty Russell2011-06-201-1/+6
| | | | | | | | These don't exist in tdb2. The former is used in one weird place in tdb1, and the latter not at all. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_compat: use tdb_errorstr_compat()Rusty Russell2011-06-201-6/+6
| | | | | | | | Since TDB2 functions return the error directly, tdb_errorstr() taken an error code, not the tdb as it does in TDB1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_traverse/tdb_traverse_read: check returns for negative, not -1.Rusty Russell2011-06-201-1/+1
| | | | | | | | | | | TDB2 returns a negative error number on failure. This is compatible if we always check for < 0 instead of == -1. Also, there's no tdb_traverse_read in TDB2: we don't try to make traverse reliable any more, so there are no write locks anyway. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_transaction_cancel: ignore return value.Rusty Russell2011-06-201-11/+5
| | | | | | | | | TDB2 returns void here. tdb_transaction_cancel will *always* return with the transaction cancelled, but it will complain via the log function if a transaction wasn't in progress. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_transaction_commit: check returns for 0, not -1.Rusty Russell2011-06-201-4/+4
| | | | | | | | TDB2 returns a negative error number on failure. This is compatible if we always check for != 0 instead of == -1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_delete: check returns for 0, not -1.Rusty Russell2011-06-201-3/+3
| | | | | | | | TDB2 returns a negative error number on failure. This is compatible if we always check for != 0 instead of == -1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tdb_fetch_compat: use instead of tdb_fetch.Rusty Russell2011-06-201-1/+1
| | | | | | | This is a noop for tdb1. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* gencache: don't use CLEAR_IF_FIRST as fallback.Rusty Russell2011-04-191-7/+3
| | | | | | | | | | | | CLEAR_IF_FIRST only works if *all* openers use that flag. So just truncate the file: it's racy, but that's what we're doing anyway. We'd really need a TDB_OPENCHECK_OR_CLEAR flag to do this properly (or in TDB2, a open hook at the right point). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* s3: only include tdb headers where needed.Günther Deschner2011-05-061-0/+1
| | | | Guenther
* More const fixes for compiler warnings from the waf build.Jeremy Allison2011-05-051-1/+1
|
* s3-includes: only include system/filesys.h when needed.Günther Deschner2011-03-301-0/+1
| | | | Guenther
* s3-includes: only include system/glob.h when needed.Günther Deschner2011-03-301-0/+1
| | | | Guenther
* s3:lib/gencache: fix memory leak in error pathStefan Metzmacher2010-12-221-0/+3
| | | | | | | metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Wed Dec 22 15:08:30 CET 2010 on sn-devel-104
* s3: Add gencache_iterate_blobsVolker Lendecke2010-11-281-57/+87
|
* s3: Convert gencache_get_data_blob to gencache_parseVolker Lendecke2010-11-281-59/+38
|
* s3: Add gencache_parseVolker Lendecke2010-11-281-0/+59
|
* Change to using TDB_INCOMPATIBLE_HASH (the jenkins hash) on allJeremy Allison2010-09-271-4/+4
| | | | | | | | | | 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.
* s3: Use tdb_transaction_start_nonblock in gencache_stabilizeVolker Lendecke2010-03-281-1/+10
| | | | | This avoids the thundering herd problem when 5000 smbds exit simultaneously because the network went down.
* Revert "s3: Optimize gencache for smbd exit"Volker Lendecke2010-03-281-75/+14
| | | | | | This reverts commit 5ca63676dc59e83ffd9560fdcfa26063f267f283. That does not fully fix the problem, adding a tdb_transaction_start_nonblock to fix it.
* s3: Optimize gencache for smbd exitVolker Lendecke2010-03-241-14/+75
| | | | | | | | If thousands of smbds try to gencache_stabilize at the same time because the network died, all of them might be sitting in transaction_start. Don't do the stabilize transaction if nothing has changed in gencache_notrans.tdb. Volker
* s3: let gencache_init() use tdb_check()Stefan Metzmacher2009-12-071-0/+25
| | | | | | | If the check fails we try to clear the tdb and start with an empty cache. metze
* s3-gencache: restore gencache_get behavior with NULL args (with torture test).Günther Deschner2009-11-021-4/+8
| | | | | | | | | Without this, we panic in wins_srv_is_dead() and fail to start nmbd with wins support. Volker, please check. Guenther
* s3:gencache: Add my copyrightVolker Lendecke2009-09-281-0/+1
|
* s3:gencache: Make gencache_del() return success for expired entriesVolker Lendecke2009-09-231-4/+13
| | | | This fixes nasty error messages from "net cache flush"
* s3:gencache: Remove some over-paranoid lockingVolker Lendecke2009-09-231-6/+0
|
* s3:gencache: Add a "was_expired" argument to gencache_get_data_blobVolker Lendecke2009-09-231-10/+19
| | | | | This is set to true if the routine returns failure due to an existing but expired entry.
* Consolidate gencache also every 100 writes in a single processVolker Lendecke2009-07-151-0/+14
|
* Consolidate string and data_blob routines in gencacheVolker Lendecke2009-07-151-138/+56
|
* Make gencache more stableVolker Lendecke2009-07-151-15/+268
| | | | | | | | | | This provides a compromise between stability and performance: gencache is a persistent database these days that for performance reasons can not use tdb transactions for all writes. This patch splits up gencache into gencache.tdb and gencache_notrans.tdb. gencache_notrans is used with CLEAR_IF_FIRST, writes to it don't use transactions. By default every 5 minutes and when a program exits, all entries from _notrans.tdb are transferred to gencache.tdb in one transaction.
* Remove gencache_init/shutdownVolker Lendecke2009-07-151-20/+1
| | | | | gencache_get/set/del/iterate call gencache_init() internally anyway. And we've been very lazy calling gencache_shutdown, so this seems not really required.
* Remove gencache_[un]lock_keyVolker Lendecke2009-07-151-25/+0
|
* TDB_CONTEXT -> "struct tdb_context"Volker Lendecke2009-07-151-1/+1
|
* Replace ASSERTs in gencache with "return false"Volker Lendecke2009-07-151-12/+18
| | | | It's a bit strong to panic here I think.
* simplify gencache_iterate a bit, fix nonempty blank linesVolker Lendecke2009-01-191-86/+84
|
* Revert "Return timed out entries from gencache_get if timeout param != NULL"Volker Lendecke2008-07-111-15/+10
| | | | | This reverts commit 2954b2be563149380e1fae7fe088b98d6cbd42e7. (This used to be commit 77ab2fb306a7ad59447a3e1591c2af03447e09c5)
* Revert "Remove gencache_[un]lock_entry"Volker Lendecke2008-07-111-0/+25
| | | | | This reverts commit 7a5a575ffe5196caecedc93970a25abfbe6f8059. (This used to be commit 62e444dd50ae974c2ab9a553cdf7f188a8f2c538)
* Remove gencache_[un]lock_entryVolker Lendecke2008-07-031-25/+0
| | | | | Günther agreed that it might be unnecessary in dsgetdcname_cache_store() :-) (This used to be commit 7a5a575ffe5196caecedc93970a25abfbe6f8059)
* Return timed out entries from gencache_get if timeout param != NULLVolker Lendecke2008-07-031-10/+15
| | | | | | | | net cache get was the only one interested in the timeout. That single caller can take care of the timeout itself then. With this API change idmap_cache.c can be converted to gencache. (This used to be commit 2954b2be563149380e1fae7fe088b98d6cbd42e7)
* gencache: add some const.Günther Deschner2008-05-081-1/+1
| | | | | Guenther (This used to be commit ec9f8c4cf67c82f4665ed51e4fd0181f5f147ea0)
* Fix some warningsVolker Lendecke2008-02-251-6/+6
| | | | | warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result (This used to be commit ad37b7b0aee265a3e4d8b7552610f4b9a105434d)
* don't store cache_readonly in gencacheVolker Lendecke2007-12-281-15/+0
| | | | | tdb won't allow us to write anyway (This used to be commit 069cd6d63a61065be7926230235e198c456d38ae)
* RIP BOOL. Convert BOOL -> bool. I found a few interestingJeremy Allison2007-10-181-11/+11
| | | | | | | | bugs in various places whilst doing this (places that assumed BOOL == int). I also need to fix the Samba4 pidl generation (next checkin). Jeremy. (This used to be commit f35a266b3cbb3e5fa6a86be60f34fe340a3ca71f)
* r24733: Add support for storing DATA_BLOBs in gencache.tdb (including ↵Günther Deschner2007-10-101-0/+157
| | | | | | | | | | torturetest). Mimir, please have a look. DATA_BLOBs will now just show up as "DATA_BLOB" values with "net cache list". Guenther (This used to be commit b8ad546d041a2a8cc85c7db8eba4d2d3b97df1a8)
* r23784: use the GPLv3 boilerplate as recommended by the FSF and the license textAndrew Tridgell2007-10-101-2/+1
| | | | (This used to be commit b0132e94fc5fef936aa766fb99a306b3628e9f07)
* r23779: Change from v2 or later to v3 or later.Jeremy Allison2007-10-101-1/+1
| | | | | Jeremy. (This used to be commit 407e6e695b8366369b7c76af1ff76869b45347b3)
* r22009: change TDB_DATA from char * to unsigned char *Stefan Metzmacher2007-10-101-3/+3
| | | | | | | and fix all compiler warnings in the users metze (This used to be commit 3a28443079c141a6ce8182c65b56ca210e34f37f)
* r21976: make use of tdb_*_bystring() and string_term_tdb_data() in lib/Stefan Metzmacher2007-10-101-17/+9
| | | | | | | to avoid creating the TDB_DATA struct from strings "by hand" metze (This used to be commit c22b86595a502eb48c9d0038faee8a9ee41b8438)
* r19415: oh la la, always compile before commit, I'm very sorry.Günther Deschner2007-10-101-6/+1
| | | | | Guenther (This used to be commit bdd2e0361ce53a4f10fca767f734991797e7f927)
* r19414: gencache is getting really important now, make sure that lp_lockdirGünther Deschner2007-10-101-1/+1
| | | | | | | always exists so that the gencache.tdb can get created there. Guenther (This used to be commit e5ed286125d1f4b8b28bf143f987102071fd0de2)