]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/tdb1_tdb.c
tdb2: add stats to tdb1 backend.
[ccan] / ccan / tdb2 / tdb1_tdb.c
index 0e3cc13caba9f9ab4093de2c0325a34012b74715..9730dceffc2b5b7b8bccbeaef1ca6bacd689c2a4 100644 (file)
@@ -89,11 +89,18 @@ static tdb1_off_t tdb1_find(struct tdb_context *tdb, TDB_DATA key, uint32_t hash
                if (tdb1_rec_read(tdb, rec_ptr, r) == -1)
                        return 0;
 
-               if (!TDB1_DEAD(r) && hash==r->full_hash
-                   && key.dsize==r->key_len
-                   && tdb1_parse_data(tdb, key, rec_ptr + sizeof(*r),
-                                     r->key_len, tdb1_key_compare,
-                                     NULL) == 0) {
+               tdb->stats.compares++;
+               if (TDB1_DEAD(r)) {
+                       tdb->stats.compare_wrong_bucket++;
+               } else if (key.dsize != r->key_len) {
+                       tdb->stats.compare_wrong_keylen++;
+               } else if (hash != r->full_hash) {
+                       tdb->stats.compare_wrong_rechash++;
+               } else if (tdb1_parse_data(tdb, key, rec_ptr + sizeof(*r),
+                                          r->key_len, tdb1_key_compare,
+                                          NULL) != 0) {
+                       tdb->stats.compare_wrong_keycmp++;
+               } else {
                        return rec_ptr;
                }
                /* detect tight infinite loop */
@@ -786,6 +793,7 @@ int tdb1_wipe_all(struct tdb_context *tdb)
                }
        }
 
+       tdb1_increment_seqnum_nonblock(tdb);
        tdb_unlockall(tdb);
        return 0;