return ecode;
}
- /* FIXME: tdb_increment_seqnum(tdb); */
+ if (tdb->flags & TDB_SEQNUM)
+ tdb_inc_seqnum(tdb);
+
return TDB_SUCCESS;
}
/* Put a zero in; future versions may append other data. */
ecode = tdb->methods->twrite(tdb, off + dbuf.dsize, "", 1);
}
+ if (tdb->flags & TDB_SEQNUM)
+ tdb_inc_seqnum(tdb);
+
return ecode;
}
+ rec_data_length(&rec)
+ rec_extra_padding(&rec));
+ if (tdb->flags & TDB_SEQNUM)
+ tdb_inc_seqnum(tdb);
+
unlock:
tdb_unlock_hashes(tdb, h.hlock_start, h.hlock_range, F_WRLCK);
return ecode;
case TDB_NOSYNC:
tdb->flags |= TDB_NOSYNC;
break;
+ case TDB_SEQNUM:
+ tdb->flags |= TDB_SEQNUM;
+ break;
default:
tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR,
"tdb_add_flag: Unknown flag %u", flag);
case TDB_NOSYNC:
tdb->flags &= ~TDB_NOSYNC;
break;
+ case TDB_SEQNUM:
+ tdb->flags &= ~TDB_SEQNUM;
+ break;
default:
tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR,
"tdb_remove_flag: Unknown flag %u", flag);
return tdb->name;
}
+int64_t tdb_get_seqnum(struct tdb_context *tdb)
+{
+ return tdb_read_off(tdb, offsetof(struct tdb_header, seqnum));
+}
+
+
int tdb_fd(const struct tdb_context *tdb)
{
return tdb->file->fd;