X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fbluesky-private.h;h=02453236f1f875817e4f5091f14ab551d545ab3b;hb=8ff0fd08d6e1cc97cdb7e94b7cd97dc28c29e674;hp=d4ec4cdaaffbb359baf0f470507ab97e20c620d3;hpb=fe314d13c4973852723429e709137bf7f5a8b607;p=bluesky.git diff --git a/bluesky/bluesky-private.h b/bluesky/bluesky-private.h index d4ec4cd..0245323 100644 --- a/bluesky/bluesky-private.h +++ b/bluesky/bluesky-private.h @@ -3,7 +3,29 @@ * Copyright (C) 2009 The Regents of the University of California * Written by Michael Vrable * - * TODO: Licensing + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ /* Declarations internal to the BlueSky library. This header file should not @@ -25,10 +47,12 @@ extern int bluesky_verbose; /* Target cache size levels. */ extern int bluesky_watermark_low_dirty; extern int bluesky_watermark_medium_dirty; +extern int bluesky_watermark_med2_dirty; extern int bluesky_watermark_high_dirty; extern int bluesky_watermark_low_total; extern int bluesky_watermark_medium_total; +extern int bluesky_watermark_med2_total; extern int bluesky_watermark_high_total; /* TODO: Make this go away entirely. */ @@ -198,7 +222,7 @@ void bluesky_store_add_barrier(BlueSkyStoreAsync *barrier, void bluesky_inode_start_sync(BlueSkyInode *inode); -void bluesky_block_touch(BlueSkyInode *inode, uint64_t i); +void bluesky_block_touch(BlueSkyInode *inode, uint64_t i, gboolean preserve); void bluesky_block_fetch(BlueSkyInode *inode, BlueSkyBlock *block, BlueSkyStoreAsync *barrier); void bluesky_block_flush(BlueSkyInode *inode, BlueSkyBlock *block, @@ -268,6 +292,10 @@ struct cloudlog_header { uint32_t size1, size2, size3; } __attribute__((packed)); +// Rough size limit for a log segment. This is not a firm limit and there are +// no absolute guarantees on the size of a log segment. +#define LOG_SEGMENT_SIZE (1 << 22) + #define JOURNAL_MAGIC "\nLog" #define CLOUDLOG_MAGIC "AgI-" #define CLOUDLOG_MAGIC_ENCRYPTED "AgI=" // CLOUDLOG_MAGIC[3] ^= 0x10 @@ -357,6 +385,7 @@ void bluesky_cloudlog_insert_locked(BlueSkyCloudLog *log); BlueSkyCloudLog *bluesky_cloudlog_get(BlueSkyFS *fs, BlueSkyCloudID id); void bluesky_cloudlog_prefetch(BlueSkyCloudLog *log); void bluesky_cloudlog_fetch(BlueSkyCloudLog *log); +void bluesky_cloudlog_background_fetch(BlueSkyCloudLog *item); BlueSkyCloudPointer bluesky_cloudlog_serialize(BlueSkyCloudLog *log, BlueSkyFS *fs); void bluesky_cloudlog_flush(BlueSkyFS *fs);