diff options
author | Michael Adam <obnox@samba.org> | 2014-02-12 17:40:31 +0100 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2014-03-06 11:31:10 +1100 |
commit | 48f2d1158820bfb063ba0a0bbfb6f496a8e7522d (patch) | |
tree | b28b8f6fccae7c0480213b523545a3cacbc5f3ed | |
parent | af5568b26761dadbb652d92f8c8ced477b38c7cc (diff) | |
download | samba-48f2d1158820bfb063ba0a0bbfb6f496a8e7522d.tar.gz samba-48f2d1158820bfb063ba0a0bbfb6f496a8e7522d.tar.xz samba-48f2d1158820bfb063ba0a0bbfb6f496a8e7522d.zip |
ctdb-vacuum: treat value 0 of tunable RepackLimit as turned off.
I.e. when RepackLimit is set to 0, no size of the freelist
should trigger a repack in vacuuming.
Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
-rw-r--r-- | ctdb/server/ctdb_vacuum.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/ctdb/server/ctdb_vacuum.c b/ctdb/server/ctdb_vacuum.c index 8291e77b39..061013d4a0 100644 --- a/ctdb/server/ctdb_vacuum.c +++ b/ctdb/server/ctdb_vacuum.c @@ -1420,7 +1420,7 @@ static int ctdb_vacuum_and_repack_db(struct ctdb_db_context *ctdb_db, uint32_t repack_limit = ctdb_db->ctdb->tunable.repack_limit; uint32_t vacuum_limit = ctdb_db->ctdb->tunable.vacuum_limit; const char *name = ctdb_db->db_name; - int freelist_size; + int freelist_size = 0; struct vacuum_data *vdata; vdata = talloc_zero(mem_ctx, struct vacuum_data); @@ -1449,17 +1449,19 @@ static int ctdb_vacuum_and_repack_db(struct ctdb_db_context *ctdb_db, DEBUG(DEBUG_ERR,(__location__ " Failed to vacuum '%s'\n", name)); } - freelist_size = tdb_freelist_size(ctdb_db->ltdb->tdb); - if (freelist_size == -1) { - DEBUG(DEBUG_ERR,(__location__ " Failed to get freelist size for '%s'\n", name)); - talloc_free(vdata); - return -1; + if (repack_limit != 0) { + freelist_size = tdb_freelist_size(ctdb_db->ltdb->tdb); + if (freelist_size == -1) { + DEBUG(DEBUG_ERR,(__location__ " Failed to get freelist size for '%s'\n", name)); + talloc_free(vdata); + return -1; + } } /* * decide if a repack is necessary */ - if ((uint32_t)freelist_size < repack_limit && + if ((repack_limit == 0 || (uint32_t)freelist_size < repack_limit) && vdata->delete_left < vacuum_limit) { talloc_free(vdata); |