diff options
author | Michael Adam <obnox@samba.org> | 2011-04-07 12:17:42 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2011-12-23 17:39:01 +0100 |
commit | 6f0b22234f617076e0d40c96e4bcbc3fa1af92c1 (patch) | |
tree | 8612f618715c721653183873d41535a6df34e3e0 | |
parent | a481ca711f26fe4b9d0e7eff2901d0c5944d964b (diff) | |
download | samba-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.c | 20 |
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; } |