Browse Source

Handle tracing on internal dbs.

Rusty Russell 16 years ago
parent
commit
8824055f0f
1 changed files with 10 additions and 6 deletions
  1. 10 6
      ccan/tdb/open.c

+ 10 - 6
ccan/tdb/open.c

@@ -164,12 +164,16 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
 	}
 
 #ifdef TDB_TRACE
-	sprintf(tracefile, "%s.trace.%u", name, getpid());
-	tdb->tracefd = open(tracefile, O_WRONLY|O_CREAT|O_EXCL, 0600);
-	if (tdb->tracefd < 0)
-		goto fail;
-	tdb_trace(tdb, "tdb_open %s %u %#x %#x %p\n",
-		  name, hash_size, tdb_flags, open_flags, hash_fn);
+	if (!(tdb_flags & TDB_INTERNAL)) {
+		sprintf(tracefile, "%s.trace.%u", name, getpid());
+		tdb->tracefd = open(tracefile, O_WRONLY|O_CREAT|O_EXCL, 0600);
+		if (tdb->tracefd < 0)
+			goto fail;
+		tdb_trace(tdb, "tdb_open %s %u %#x %#x %p\n",
+			  name, hash_size, tdb_flags, open_flags, hash_fn);
+	} else
+		/* All writes will fail.  That's OK. */
+		tdb->tracefd = -1;
 #endif
 
 	tdb_io_init(tdb);