X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fbucket.h;h=b6f584a8f63d7365c0ccb5e8cd7788b72bfc8226;hb=2cbdeacdc8f0fb3f4252c72a24407afba5788a6b;hp=815213ca8ea793e19205e8e45c997d2878503d60;hpb=89b67b2c54822c7867d8a91a896386f632d2051e;p=libucw.git diff --git a/lib/bucket.h b/lib/bucket.h index 815213ca..b6f584a8 100644 --- a/lib/bucket.h +++ b/lib/bucket.h @@ -1,7 +1,7 @@ /* * Sherlock Library -- Object Buckets * - * (c) 2001--2003 Martin Mares + * (c) 2001--2004 Martin Mares * * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. @@ -17,7 +17,9 @@ * * Locking: Each operation on the pool is protected by a flock. * - * The buckets emulate non-seekable fastbuf streams. + * The buckets emulate fastbuf streams. Read streams act as normal files, + * but there can be only one write stream which is non-seekable and you + * also shouldn't open new read streams when writing. * * fork()'ing if you don't have any bucket open is safe. */ @@ -82,6 +84,13 @@ static inline sh_off_t obuck_get_pos(oid_t oid) return ((sh_off_t) oid) << OBUCK_SHIFT; } +/* Calculate size of bucket which contains given amount of data */ + +static inline uns obuck_bucket_size(uns len) +{ + return ALIGN(sizeof(struct obuck_header) + len + 4, OBUCK_ALIGN); +} + /* Shaking down bucket file */ void obuck_shakedown(int (*kibitz)(struct obuck_header *old, oid_t new, byte *buck));