X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fbluesky-private.h;h=ba9df02bbdb7b8e929468ed1013869f76dffa966;hb=641411b0a7ce9afa309bea28c01320eda913b2d2;hp=058c5bd83235283b4864d5ad1425f13ba7b7ddb1;hpb=6710eff91ed1a5ee193701ef4b9b28460bb8e95c;p=bluesky.git diff --git a/bluesky/bluesky-private.h b/bluesky/bluesky-private.h index 058c5bd..ba9df02 100644 --- a/bluesky/bluesky-private.h +++ b/bluesky/bluesky-private.h @@ -19,9 +19,25 @@ extern "C" { #endif +/* Target cache size levels. */ +extern int bluesky_watermark_low_dirty; +extern int bluesky_watermark_medium_dirty; +extern int bluesky_watermark_high_dirty; + +extern int bluesky_watermark_low_total; +extern int bluesky_watermark_medium_total; +extern int bluesky_watermark_high_total; + /* TODO: Make this go away entirely. */ BlueSkyFS *bluesky_new_fs(gchar *name); +/* Linked list update functions for LRU lists. */ +void bluesky_list_unlink(GList *head, GList *item); +GList *bluesky_list_prepend(GList *head, BlueSkyInode *inode); +GList *bluesky_list_append(GList *head, BlueSkyInode *inode); +BlueSkyInode *bluesky_list_head(GList *head); +BlueSkyInode *bluesky_list_tail(GList *head); + /* Serialization and deserialization of filesystem data for storing to * persistent storage. */ void bluesky_serialize_superblock(GString *out, BlueSkyFS *fs); @@ -47,7 +63,8 @@ typedef enum { } BlueSkyAsyncStatus; struct BlueSkyNotifierList; -typedef struct { +typedef struct _BlueSkyStoreAsync BlueSkyStoreAsync; +struct _BlueSkyStoreAsync { BlueSkyStore *store; GMutex *lock; @@ -65,10 +82,16 @@ typedef struct { struct BlueSkyNotifierList *notifiers; gint notifier_count; + /* The barrier waiting on this operation. Support for more than one + * barrier for a single async is not well-supported and should be avoided + * if possible. */ + BlueSkyStoreAsync *barrier; + bluesky_time_hires start_time; /* Time operation was submitted. */ + bluesky_time_hires exec_time; /* Time processing started on operation. */ gpointer store_private; /* For use by the storage implementation */ -} BlueSkyStoreAsync; +}; /* Support for notification lists. These are lists of one-shot functions which * can be called when certain events--primarily, competed storage