From: Andrew Tridgell Date: Fri, 11 May 2007 00:33:43 +0000 (+1000) Subject: - merge from ronnie X-Git-Tag: tevent-0.9.20~348^2~2755 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63acf8ab95e117f70b286821ff7e457b2182cdf2;p=thirdparty%2Fsamba.git - merge from ronnie - increment rsn only in become_dmaster - add torture check for rsn regression in ctdb_ltdb_store (This used to be ctdb commit 8047506a08bb53ee01aa64f25c9f72839e1e2d68) --- 63acf8ab95e117f70b286821ff7e457b2182cdf2 diff --cc ctdb/common/ctdb_call.c index 8dd03449a8f,76bc570c536..a8e470126de --- a/ctdb/common/ctdb_call.c +++ b/ctdb/common/ctdb_call.c @@@ -295,7 -295,7 +295,7 @@@ static void ctdb_become_dmaster(struct DEBUG(2,("vnn %u dmaster response %08x\n", ctdb->vnn, ctdb_hash(&key))); ZERO_STRUCT(header); -- header.rsn = rsn; ++ header.rsn = rsn + 1; header.dmaster = ctdb->vnn; if (ctdb_ltdb_store(ctdb_db, key, &header, data) != 0) { diff --cc ctdb/common/ctdb_ltdb.c index 35099f2e299,35099f2e299..77ce0e80cb1 --- a/ctdb/common/ctdb_ltdb.c +++ b/ctdb/common/ctdb_ltdb.c @@@ -145,6 -145,6 +145,17 @@@ int ctdb_ltdb_store(struct ctdb_db_cont TDB_DATA rec; int ret; ++ if (ctdb->flags & CTDB_FLAG_TORTURE) { ++ struct ctdb_ltdb_header *h2; ++ rec = tdb_fetch(ctdb_db->ltdb->tdb, key); ++ h2 = (struct ctdb_ltdb_header *)rec.dptr; ++ if (rec.dptr && rec.dsize >= sizeof(h2) && h2->rsn > header->rsn) { ++ DEBUG(0,("RSN regression! %llu %llu\n", ++ (unsigned long long)h2->rsn, (unsigned long long)header->rsn)); ++ } ++ if (rec.dptr) free(rec.dptr); ++ } ++ rec.dsize = sizeof(*header) + data.dsize; rec.dptr = talloc_size(ctdb, rec.dsize); CTDB_NO_MEMORY(ctdb, rec.dptr);