X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fbucket.h;h=24e7ae00d13c1a5d810a2eae38559de8960aa7ab;hb=68fe13e77b7ceaf950289e747281655ddb264576;hp=f99baae92ffbc6068952363e99d324fb8a5f61c9;hpb=37ce60ff458c8bb8794b380e8fe7508c0e9315d2;p=libucw.git diff --git a/lib/bucket.h b/lib/bucket.h index f99baae9..24e7ae00 100644 --- a/lib/bucket.h +++ b/lib/bucket.h @@ -2,6 +2,9 @@ * Sherlock Library -- Object Buckets * * (c) 2001 Martin Mares + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ /* @@ -39,6 +42,9 @@ struct fastbuf; 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 */ +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); @@ -55,3 +61,13 @@ void obuck_create_end(struct fastbuf *b, 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));