\paperpagestyle default
\tracking_changes true
\output_changes true
-\author "Rusty Russell,,,"
+\author ""
\author ""
\end_header
\end_layout
\begin_layout Date
-1-December-2010
+17-March-2011
\end_layout
\begin_layout Abstract
\end_layout
\begin_layout Standard
-Incomplete; nesting flag is still defined as per tdb1.
+Complete; the nesting flag has been removed.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete.
- TDB_VOLATILE still defined, but implementation should fail on unknown flags
- to be future-proof.
+Complete.
+ Unknown flags cause tdb_open() to fail as well, so they can be detected
+ at runtime.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete.
+Complete.
\end_layout
\begin_layout Subsection
\begin_layout Standard
Reachitecting the API to include a tdb_errcode pointer would be a great
- deal of churn; we are better to guarantee that the tdb_errcode is per-thread
- so the current programming model can be maintained.
-\end_layout
-
-\begin_layout Standard
-This requires dynamic per-thread allocations, which is awkward with POSIX
- threads (pthread_key_create space is limited and we cannot simply allocate
- a key for every TDB).
+ deal of churn, but fortunately most functions return 0 on success and -1
+ on error: we can change these to return 0 on success and a negative error
+ code on error, and the API remains similar to previous.
+ The tdb_fetch, tdb_firstkey and tdb_nextkey functions need to take a TDB_DATA
+ pointer and return an error code.
+ It is also simpler to have tdb_nextkey replace its key argument in place,
+ freeing up any old .dptr.
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-Incomplete.
+Incomplete; API has been changed but thread safety has not been implemented.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete.
+Complete.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete, TDB_CLEAR_IF_FIRST still defined, but not implemented.
+Complete.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete.
+Complete.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete.
+Complete.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-Incomplete; TDB_CLEAR_IF_FIRST still defined, but does nothing.
+Complete.
\end_layout
\begin_layout Subsection
\end_layout
\begin_layout Standard
-
-\change_deleted 0 1291206079
-
-\change_unchanged
Note that by limiting valid offsets to 56 bits, we can pack everything we
need into 3 64-byte words, meaning our minimum record size is 8 bytes.
\end_layout