summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-02-03 12:15:41 +0100
committerMichael Adam <obnox@samba.org>2011-03-14 13:35:43 +0100
commit3cb3620acfd32ca402353e209e08ffbc3b420de1 (patch)
treef0ed29a7e0d4c07615b58d3867fb1fcc5b0cbf63
parentdd75ae8c1525e8415ce6d696cca994c31b6874fe (diff)
downloadsamba-3cb3620acfd32ca402353e209e08ffbc3b420de1.tar.gz
samba-3cb3620acfd32ca402353e209e08ffbc3b420de1.tar.xz
samba-3cb3620acfd32ca402353e209e08ffbc3b420de1.zip
vacuum: check lmaster against num_nodes instead of vnn_map->size
When lmaster is bigger than the biggest recorded node number, then exit the traverse with error. (This used to be ctdb commit 3930c7796b72bbf275bbca8aaeceec3e705a964b)
-rw-r--r--ctdb/server/ctdb_vacuum.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ctdb/server/ctdb_vacuum.c b/ctdb/server/ctdb_vacuum.c
index aa7908fe0e..e5b3cd5e22 100644
--- a/ctdb/server/ctdb_vacuum.c
+++ b/ctdb/server/ctdb_vacuum.c
@@ -109,8 +109,14 @@ static int vacuum_traverse(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data,
size_t old_size;
lmaster = ctdb_lmaster(ctdb, &key);
- if (lmaster >= ctdb->vnn_map->size) {
- return 0;
+ if (lmaster >= ctdb->num_nodes) {
+ DEBUG(DEBUG_CRIT, (__location__
+ " lmaster[%u] >= ctdb->num_nodes[%u] for key"
+ " with hash[%u]!\n",
+ (unsigned)lmaster,
+ (unsigned)ctdb->num_nodes,
+ (unsigned)ctdb_hash(&key)));
+ return -1;
}
if (data.dsize != sizeof(struct ctdb_ltdb_header)) {