summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tdb2/check.c6
-rw-r--r--lib/tdb2/tdb2.h6
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/tdb2/check.c b/lib/tdb2/check.c
index 3003b62616..230eaee8e3 100644
--- a/lib/tdb2/check.c
+++ b/lib/tdb2/check.c
@@ -782,6 +782,12 @@ enum TDB_ERROR tdb_check_(struct tdb_context *tdb,
uint64_t features;
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 (tdb1_check(tdb, check, data) == -1)
return tdb->last_error;
diff --git a/lib/tdb2/tdb2.h b/lib/tdb2/tdb2.h
index 55ad309722..44e7897993 100644
--- a/lib/tdb2/tdb2.h
+++ b/lib/tdb2/tdb2.h
@@ -89,6 +89,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
#define TDB_ALLOW_NESTING 256 /* fake nested transactions */
#define TDB_RDONLY 512 /* implied by O_RDONLY */
#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
@@ -540,6 +541,11 @@ enum TDB_ERROR tdb_repack(struct tdb_context *tdb);
* checks as well. If check() returns an error, that is returned from
* 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.
*/
#define tdb_check(tdb, check, data) \