summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-04-07 12:17:42 +0200
committerMichael Adam <obnox@samba.org>2011-12-23 17:39:01 +0100
commit6f0b22234f617076e0d40c96e4bcbc3fa1af92c1 (patch)
tree8612f618715c721653183873d41535a6df34e3e0
parenta481ca711f26fe4b9d0e7eff2901d0c5944d964b (diff)
downloadsamba-6f0b22234f617076e0d40c96e4bcbc3fa1af92c1.tar.gz
samba-6f0b22234f617076e0d40c96e4bcbc3fa1af92c1.tar.xz
samba-6f0b22234f617076e0d40c96e4bcbc3fa1af92c1.zip
ctdb_ltdb_store_server: when storing a record that is not to be scheduled for deletion, remove it from the delete queue
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 489148e465e2b8aed87ea836e3518f43490671ca)
-rw-r--r--ctdb/server/ctdb_ltdb_server.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c
index 8423388433..9a0132a362 100644
--- a/ctdb/server/ctdb_ltdb_server.c
+++ b/ctdb/server/ctdb_ltdb_server.c
@@ -51,6 +51,7 @@ static int ctdb_ltdb_store_server(struct ctdb_db_context *ctdb_db,
bool seqnum_suppressed = false;
bool keep = false;
bool schedule_for_deletion = false;
+ bool remove_from_delete_queue = false;
uint32_t lmaster;
if (ctdb->flags & CTDB_FLAG_TORTURE) {
@@ -122,12 +123,14 @@ static int ctdb_ltdb_store_server(struct ctdb_db_context *ctdb_db,
keep = true;
}
- if (keep &&
- (data.dsize == 0) &&
- !ctdb_db->persistent &&
- (ctdb_db->ctdb->pnn == header->dmaster))
- {
- schedule_for_deletion = true;
+ if (keep) {
+ if ((data.dsize == 0) &&
+ !ctdb_db->persistent &&
+ (ctdb_db->ctdb->pnn == header->dmaster))
+ {
+ schedule_for_deletion = true;
+ }
+ remove_from_delete_queue = !schedule_for_deletion;
}
store:
@@ -208,6 +211,7 @@ store:
tdb_errorstr(ctdb_db->ltdb->tdb)));
schedule_for_deletion = false;
+ remove_from_delete_queue = false;
}
if (seqnum_suppressed) {
tdb_add_flags(ctdb_db->ltdb->tdb, TDB_SEQNUM);
@@ -223,6 +227,10 @@ store:
}
}
+ if (remove_from_delete_queue) {
+ ctdb_local_remove_from_delete_queue(ctdb_db, header, key);
+ }
+
return ret;
}