]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/private.h
tdb2: rework some io.c functions to return enum TDB_ERROR.
[ccan] / ccan / tdb2 / private.h
index ae3ffb2a6b089819bbe6bbfbf26dc4f80dfb6be9..9abed97df08cdbe4b1fea9b9463adc8133ac72a2 100644 (file)
@@ -379,10 +379,12 @@ struct tdb_context {
 };
 
 struct tdb_methods {
-       int (*tread)(struct tdb_context *, tdb_off_t, void *, tdb_len_t);
-       int (*twrite)(struct tdb_context *, tdb_off_t, const void *, tdb_len_t);
-       int (*oob)(struct tdb_context *, tdb_off_t, bool);
-       int (*expand_file)(struct tdb_context *, tdb_len_t);
+       enum TDB_ERROR (*tread)(struct tdb_context *, tdb_off_t, void *,
+                               tdb_len_t);
+       enum TDB_ERROR (*twrite)(struct tdb_context *, tdb_off_t, const void *,
+                                tdb_len_t);
+       enum TDB_ERROR (*oob)(struct tdb_context *, tdb_off_t, bool);
+       enum TDB_ERROR (*expand_file)(struct tdb_context *, tdb_len_t);
        void *(*direct)(struct tdb_context *, tdb_off_t, size_t, bool);
 };
 
@@ -474,16 +476,17 @@ void *tdb_access_write(struct tdb_context *tdb,
 /* Release result of tdb_access_read/write. */
 void tdb_access_release(struct tdb_context *tdb, const void *p);
 /* Commit result of tdb_acces_write. */
-int tdb_access_commit(struct tdb_context *tdb, void *p);
+enum TDB_ERROR tdb_access_commit(struct tdb_context *tdb, void *p);
 
 /* Convenience routine to get an offset. */
 tdb_off_t tdb_read_off(struct tdb_context *tdb, tdb_off_t off);
 
 /* Write an offset at an offset. */
-int tdb_write_off(struct tdb_context *tdb, tdb_off_t off, tdb_off_t val);
+enum TDB_ERROR tdb_write_off(struct tdb_context *tdb, tdb_off_t off,
+                            tdb_off_t val);
 
 /* Clear an ondisk area. */
-int zero_out(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len);
+enum TDB_ERROR zero_out(struct tdb_context *tdb, tdb_off_t off, tdb_len_t len);
 
 /* Return a non-zero offset between >= start < end in this array (or end). */
 tdb_off_t tdb_find_nonzero_off(struct tdb_context *tdb,
@@ -499,12 +502,12 @@ tdb_off_t tdb_find_zero_off(struct tdb_context *tdb, tdb_off_t off,
 void *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t len);
 
 /* Writes a converted copy of a record. */
-int tdb_write_convert(struct tdb_context *tdb, tdb_off_t off,
-                     const void *rec, size_t len);
+enum TDB_ERROR tdb_write_convert(struct tdb_context *tdb, tdb_off_t off,
+                                const void *rec, size_t len);
 
 /* Reads record and converts it */
-int tdb_read_convert(struct tdb_context *tdb, tdb_off_t off,
-                    void *rec, size_t len);
+enum TDB_ERROR tdb_read_convert(struct tdb_context *tdb, tdb_off_t off,
+                               void *rec, size_t len);
 
 /* Adds a stat, if it's in range. */
 void add_stat_(struct tdb_context *tdb, uint64_t *stat, size_t val);
@@ -518,43 +521,44 @@ void add_stat_(struct tdb_context *tdb, uint64_t *stat, size_t val);
 void tdb_lock_init(struct tdb_context *tdb);
 
 /* Lock/unlock a range of hashes. */
-int tdb_lock_hashes(struct tdb_context *tdb,
-                   tdb_off_t hash_lock, tdb_len_t hash_range,
-                   int ltype, enum tdb_lock_flags waitflag);
-int tdb_unlock_hashes(struct tdb_context *tdb,
-                     tdb_off_t hash_lock,
-                     tdb_len_t hash_range, int ltype);
+enum TDB_ERROR tdb_lock_hashes(struct tdb_context *tdb,
+                              tdb_off_t hash_lock, tdb_len_t hash_range,
+                              int ltype, enum tdb_lock_flags waitflag);
+enum TDB_ERROR tdb_unlock_hashes(struct tdb_context *tdb,
+                                tdb_off_t hash_lock,
+                                tdb_len_t hash_range, int ltype);
 
 /* Lock/unlock a particular free bucket. */
-int tdb_lock_free_bucket(struct tdb_context *tdb, tdb_off_t b_off,
-                        enum tdb_lock_flags waitflag);
+enum TDB_ERROR tdb_lock_free_bucket(struct tdb_context *tdb, tdb_off_t b_off,
+                                   enum tdb_lock_flags waitflag);
 void tdb_unlock_free_bucket(struct tdb_context *tdb, tdb_off_t b_off);
 
 /* Serialize transaction start. */
-int tdb_transaction_lock(struct tdb_context *tdb, int ltype);
-int tdb_transaction_unlock(struct tdb_context *tdb, int ltype);
+enum TDB_ERROR tdb_transaction_lock(struct tdb_context *tdb, int ltype);
+void tdb_transaction_unlock(struct tdb_context *tdb, int ltype);
 
 /* Do we have any hash locks (ie. via tdb_chainlock) ? */
 bool tdb_has_hash_locks(struct tdb_context *tdb);
 
 /* Lock entire database. */
-int tdb_allrecord_lock(struct tdb_context *tdb, int ltype,
-                      enum tdb_lock_flags flags, bool upgradable);
-int tdb_allrecord_unlock(struct tdb_context *tdb, int ltype);
-int tdb_allrecord_upgrade(struct tdb_context *tdb);
+enum TDB_ERROR tdb_allrecord_lock(struct tdb_context *tdb, int ltype,
+                                 enum tdb_lock_flags flags, bool upgradable);
+void tdb_allrecord_unlock(struct tdb_context *tdb, int ltype);
+enum TDB_ERROR tdb_allrecord_upgrade(struct tdb_context *tdb);
 
 /* Serialize db open. */
-int tdb_lock_open(struct tdb_context *tdb, enum tdb_lock_flags flags);
+enum TDB_ERROR tdb_lock_open(struct tdb_context *tdb,
+                            enum tdb_lock_flags flags);
 void tdb_unlock_open(struct tdb_context *tdb);
 bool tdb_has_open_lock(struct tdb_context *tdb);
 
 /* Serialize db expand. */
-int tdb_lock_expand(struct tdb_context *tdb, int ltype);
+enum TDB_ERROR tdb_lock_expand(struct tdb_context *tdb, int ltype);
 void tdb_unlock_expand(struct tdb_context *tdb, int ltype);
 bool tdb_has_expansion_lock(struct tdb_context *tdb);
 
 /* If it needs recovery, grab all the locks and do it. */
-int tdb_lock_and_recover(struct tdb_context *tdb);
+enum TDB_ERROR tdb_lock_and_recover(struct tdb_context *tdb);
 
 /* transaction.c: */
 int tdb_transaction_recover(struct tdb_context *tdb);