* Sherlock Library -- Object Buckets
*
* (c) 2001 Martin Mares <mj@ucw.cz>
+ *
+ * This software may be freely distributed and used according to the terms
+ * of the GNU Lesser General Public License.
*/
/*
void obuck_init(int writeable); /* Initialize the bucket module */
void obuck_cleanup(void); /* Clean up the bucket module */
void obuck_sync(void); /* Flush all buffers to disk */
-sh_off_t obuck_size(void); /* Returns current size of bucket file */
+void obuck_lock_read(void); /* Explicit locking to make sure other threads don't touch buckets now */
+void obuck_lock_write(void);
+void obuck_unlock(void);
/* Searching for buckets */
void obuck_find_by_oid(struct obuck_header *hdrp);
/* Deleting buckets */
void obuck_delete(oid_t oid);
+
+/* Convert bucket ID to file position (for size limitations etc.) */
+
+static inline sh_off_t obuck_get_pos(oid_t oid)
+{
+ return ((sh_off_t) oid) << OBUCK_SHIFT;
+}
+
+/* Shaking down bucket file */
+void obuck_shakedown(int (*kibitz)(struct obuck_header *old, oid_t new, byte *buck));