X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Fio.c;h=afab0c1a4cc37879abd9ffcd626dc9b4a49d20e0;hp=6f92a809ba9edf1609a00abba78ccf37156107f4;hb=6a8d296f9383dd25ec381e2ab136a33823d140e5;hpb=bbeb528e74c0e234e1f724ac8d54be404cfc6f9a diff --git a/ccan/tdb2/io.c b/ccan/tdb2/io.c index 6f92a809..afab0c1a 100644 --- a/ccan/tdb2/io.c +++ b/ccan/tdb2/io.c @@ -162,7 +162,7 @@ uint64_t tdb_find_nonzero_off(struct tdb_context *tdb, val = tdb_access_read(tdb, base + start * sizeof(tdb_off_t), (end - start) * sizeof(tdb_off_t), false); if (TDB_PTR_IS_ERR(val)) { - return TDB_PTR_ERR(val); + return TDB_ERR_TO_OFF(TDB_PTR_ERR(val)); } for (i = 0; i < (end - start); i++) { @@ -183,7 +183,7 @@ uint64_t tdb_find_zero_off(struct tdb_context *tdb, tdb_off_t off, /* Zero vs non-zero is the same unconverted: minor optimization. */ val = tdb_access_read(tdb, off, num * sizeof(tdb_off_t), false); if (TDB_PTR_IS_ERR(val)) { - return TDB_PTR_ERR(val); + return TDB_ERR_TO_OFF(TDB_PTR_ERR(val)); } for (i = 0; i < num; i++) { @@ -229,7 +229,7 @@ tdb_off_t tdb_read_off(struct tdb_context *tdb, tdb_off_t off) tdb_off_t *p = tdb->tdb2.io->direct(tdb, off, sizeof(*p), false); if (TDB_PTR_IS_ERR(p)) { - return TDB_PTR_ERR(p); + return TDB_ERR_TO_OFF(TDB_PTR_ERR(p)); } if (p) return *p; @@ -237,7 +237,7 @@ tdb_off_t tdb_read_off(struct tdb_context *tdb, tdb_off_t off) ecode = tdb_read_convert(tdb, off, &ret, sizeof(ret)); if (ecode != TDB_SUCCESS) { - return ecode; + return TDB_ERR_TO_OFF(ecode); } return ret; } @@ -584,6 +584,11 @@ void tdb_inc_seqnum(struct tdb_context *tdb) { tdb_off_t seq; + if (tdb->flags & TDB_VERSION1) { + tdb1_increment_seqnum_nonblock(tdb); + return; + } + if (likely(!(tdb->flags & TDB_CONVERT))) { int64_t *direct;