diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-12-05 17:04:30 +1030 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-12-05 17:04:30 +1030 |
commit | eff985b7ef3f1adb3da383baaea013f7f3797bb2 (patch) | |
tree | 8fd3d0dc6ffcf02d929fb7f656e8ae3d118c9b19 /lib/tdb2 | |
parent | 6e3c40500c9c786a5b20a02420fcf48ec0b9b5c4 (diff) | |
download | samba-eff985b7ef3f1adb3da383baaea013f7f3797bb2.tar.gz samba-eff985b7ef3f1adb3da383baaea013f7f3797bb2.tar.bz2 samba-eff985b7ef3f1adb3da383baaea013f7f3797bb2.zip |
tdb2: add an internal TDB_CANT_CHECK flag.
This will be used shortly to indicate that a TDB2 file indicates it
cannot be checked.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit e01d795c8964b791def1e9f68c386b350b3a2a84)
Diffstat (limited to 'lib/tdb2')
-rw-r--r-- | lib/tdb2/check.c | 6 | ||||
-rw-r--r-- | lib/tdb2/tdb2.h | 6 |
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) \ |