#define DELETE_PROB 8
#define STORE_PROB 4
#define APPEND_PROB 6
-//#define TRANSACTION_PROB 10
-//#define TRANSACTION_PREPARE_PROB 2
+#define TRANSACTION_PROB 10
+#define TRANSACTION_PREPARE_PROB 2
#define LOCKSTORE_PROB 5
#define TRAVERSE_PROB 20
#define TRAVERSE_READ_PROB 20
static int loopnum;
static int count_pipe;
static union tdb_attribute log_attr;
+static union tdb_attribute seed_attr;
-#ifdef PRINTF_ATTRIBUTE
-static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...) PRINTF_ATTRIBUTE(4,5);
+#ifdef PRINTF_FMT
+static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...) PRINTF_FMT(4,5);
#endif
static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...)
{
}
if (in_traverse == 0 && in_transaction && random() % TRANSACTION_PROB == 0) {
- if (tdb_transaction_cancel(db) != 0) {
- fatal("tdb_transaction_cancel failed");
- }
+ tdb_transaction_cancel(db);
in_transaction--;
goto next;
}
int kill_random = 0;
int *done;
+ log_attr.base.attr = TDB_ATTRIBUTE_LOG;
+ log_attr.base.next = &seed_attr;
log_attr.log.log_fn = tdb_log;
+ seed_attr.base.attr = TDB_ATTRIBUTE_SEED;
while ((c = getopt(argc, argv, "n:l:s:thk")) != -1) {
switch (c) {
if (seed == -1) {
seed = (getpid() + time(NULL)) & 0x7FFFFFFF;
}
+ seed_attr.seed.seed = (((uint64_t)seed) << 32) | seed;
if (num_procs == 1 && !kill_random) {
/* Don't fork for this case, makes debugging easier. */