summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2014-02-12 17:40:31 +0100
committerAmitay Isaacs <amitay@gmail.com>2014-03-06 11:31:10 +1100
commit48f2d1158820bfb063ba0a0bbfb6f496a8e7522d (patch)
treeb28b8f6fccae7c0480213b523545a3cacbc5f3ed
parentaf5568b26761dadbb652d92f8c8ced477b38c7cc (diff)
downloadsamba-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.c16
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);