From b673abf32b3dd246f7767ff58425f6168a9237e1 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 22 Jun 2013 19:30:50 +1000 Subject: [PATCH] dsdb-ridalloc: Fix RID pools - RID numbers increase too quickly A patch by Cove Schneider who reports: I noticed that the RID numbers seem to increase incrementally, then will suddenly jump by 124501. Unless I'm misunderstanding, shouldn't RID pool allocations just be 500 at a time? e.g. Adding accounts one after another on a single test instance here's how they're incrementing (from 4.0.6): 1596 1597 1598 1599 126100 126101 126102 ... 126599 251100 ... 251599 376100 ... The problem is that this complicates using sssd's AD integration, as that it doesn't expect the RIDs to increase in a single domain so quickly. Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Thu Jul 4 20:13:05 CEST 2013 on sn-devel-104 (cherry picked from commit 2763cad409430c183f7f1f6f57bc6b38ae616ed9) --- source4/dsdb/samdb/ldb_modules/ridalloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source4/dsdb/samdb/ldb_modules/ridalloc.c b/source4/dsdb/samdb/ldb_modules/ridalloc.c index d0266ed..3b4f73d 100644 --- a/source4/dsdb/samdb/ldb_modules/ridalloc.c +++ b/source4/dsdb/samdb/ldb_modules/ridalloc.c @@ -605,7 +605,8 @@ int ridalloc_allocate_rid(struct ldb_module *module, uint32_t *rid, struct ldb_r /* * if we are half-exhausted then try to get a new pool. */ - if (nridset.next_rid > (prev_pool_hi + prev_pool_lo)/2) { + if (nridset.next_rid > (prev_pool_hi + prev_pool_lo)/2 && + nridset.alloc_pool == nridset.prev_pool) { /* * if we are the RID Manager, * we can get a new pool localy. -- 1.7.11.7