Commit e01d795c authored by Rusty Russell's avatar Rusty Russell

tdb2: add an internal TDB_CANT_CHECK flag.

This will be used shortly to indicate that a TDB2 file indicates it
cannot be checked.
parent b3ae79ae
...@@ -782,6 +782,12 @@ enum TDB_ERROR tdb_check_(struct tdb_context *tdb, ...@@ -782,6 +782,12 @@ enum TDB_ERROR tdb_check_(struct tdb_context *tdb,
uint64_t features; uint64_t features;
enum TDB_ERROR ecode; enum TDB_ERROR ecode;
if (tdb->flags & TDB_CANT_CHECK) {
return tdb_logerr(tdb, TDB_SUCCESS, TDB_LOG_WARNING,
"tdb_check: database has unknown features,"
" cannot check.");
}
if (tdb->flags & TDB_VERSION1) { if (tdb->flags & TDB_VERSION1) {
if (tdb1_check(tdb, check, data) == -1) if (tdb1_check(tdb, check, data) == -1)
return tdb->last_error; return tdb->last_error;
......
...@@ -87,6 +87,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, ...@@ -87,6 +87,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
#define TDB_ALLOW_NESTING 256 /* fake nested transactions */ #define TDB_ALLOW_NESTING 256 /* fake nested transactions */
#define TDB_RDONLY 512 /* implied by O_RDONLY */ #define TDB_RDONLY 512 /* implied by O_RDONLY */
#define TDB_VERSION1 1024 /* create/open an old style TDB */ #define TDB_VERSION1 1024 /* create/open an old style TDB */
#define TDB_CANT_CHECK 2048 /* has a feature which we don't understand */
/** /**
* tdb1_incompatible_hash - better (Jenkins) hash for tdb1 * tdb1_incompatible_hash - better (Jenkins) hash for tdb1
...@@ -538,6 +539,11 @@ enum TDB_ERROR tdb_repack(struct tdb_context *tdb); ...@@ -538,6 +539,11 @@ enum TDB_ERROR tdb_repack(struct tdb_context *tdb);
* checks as well. If check() returns an error, that is returned from * checks as well. If check() returns an error, that is returned from
* tdb_check(). * tdb_check().
* *
* Note that the TDB uses a feature which we don't understand which
* indicates we can't run tdb_check(), this will log a warning to that
* effect and return TDB_SUCCESS. You can detect this condition by
* looking for TDB_CANT_CHECK in tdb_get_flags().
*
* Returns TDB_SUCCESS or an error. * Returns TDB_SUCCESS or an error.
*/ */
#define tdb_check(tdb, check, data) \ #define tdb_check(tdb, check, data) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment