[PATCH] make gencache hash size configurable
Christof Schmitt
cs at samba.org
Fri Mar 3 17:29:04 UTC 2017
On Fri, Mar 03, 2017 at 11:14:34AM +0100, Volker Lendecke wrote:
> Hi!
>
> Review appreciated!
Reviewed-by: Christof Schmitt <cs at samba.org>
If that is needed for other tdbs as well, it could be moved to tdb_wrap
or dbwrap, but for now having it local for gencache should be
sufficient.
Christof
>
> Thanks, Volker
> From 627bafeb1e7165fbc51f5d2de3232bb528dbd0a5 Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Mon, 6 Feb 2017 17:10:40 +0100
> Subject: [PATCH] lib: Make gencache hash size configurable, default to 10000
>
> For large deployments with many users, we put a lot of idmapping
> entries into gencache. Increase the hash size from our default 131.
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> source3/lib/gencache.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c
> index 2c1704e..1572825 100644
> --- a/source3/lib/gencache.c
> +++ b/source3/lib/gencache.c
> @@ -55,12 +55,15 @@ static bool gencache_init(void)
> {
> char* cache_fname = NULL;
> int open_flags = O_RDWR|O_CREAT;
> + int hash_size;
>
> /* skip file open if it's already opened */
> if (cache) {
> return true;
> }
>
> + hash_size = lp_parm_int(-1, "gencache", "hash_size", 10000);
> +
> cache_fname = cache_path("gencache.tdb");
> if (cache_fname == NULL) {
> return false;
> @@ -68,7 +71,7 @@ static bool gencache_init(void)
>
> DEBUG(5, ("Opening cache file at %s\n", cache_fname));
>
> - cache = tdb_wrap_open(NULL, cache_fname, 0,
> + cache = tdb_wrap_open(NULL, cache_fname, hash_size,
> TDB_DEFAULT|TDB_INCOMPATIBLE_HASH,
> open_flags, 0644);
> if (cache) {
> @@ -87,7 +90,7 @@ static bool gencache_init(void)
> * CLEAR_IF_FIRST databases, so lets use it here to
> * clean up a broken database.
> */
> - cache = tdb_wrap_open(NULL, cache_fname, 0,
> + cache = tdb_wrap_open(NULL, cache_fname, hash_size,
> TDB_DEFAULT|
> TDB_INCOMPATIBLE_HASH|
> TDB_CLEAR_IF_FIRST,
> @@ -97,7 +100,7 @@ static bool gencache_init(void)
>
> if (!cache && (errno == EACCES)) {
> open_flags = O_RDONLY;
> - cache = tdb_wrap_open(NULL, cache_fname, 0,
> + cache = tdb_wrap_open(NULL, cache_fname, hash_size,
> TDB_DEFAULT|TDB_INCOMPATIBLE_HASH,
> open_flags, 0644);
> if (cache) {
> @@ -119,7 +122,7 @@ static bool gencache_init(void)
>
> DEBUG(5, ("Opening cache file at %s\n", cache_fname));
>
> - cache_notrans = tdb_wrap_open(NULL, cache_fname, 0,
> + cache_notrans = tdb_wrap_open(NULL, cache_fname, hash_size,
> TDB_CLEAR_IF_FIRST|
> TDB_INCOMPATIBLE_HASH|
> TDB_NOSYNC|
> --
> 2.1.4
>
More information about the samba-technical
mailing list