X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fbluesky-private.h;h=d4ec4cdaaffbb359baf0f470507ab97e20c620d3;hb=9e4bbf0254fa05ab199e25fc1e70a3325225c6c7;hp=adeb82e451663aae3592b4bee58621f2b500247b;hpb=e692553e85c46324aaeb36c6e737339ddae115a0;p=bluesky.git diff --git a/bluesky/bluesky-private.h b/bluesky/bluesky-private.h index adeb82e..d4ec4cd 100644 --- a/bluesky/bluesky-private.h +++ b/bluesky/bluesky-private.h @@ -14,6 +14,7 @@ #define _BLUESKY_PRIVATE_H #include "bluesky.h" +#include #ifdef __cplusplus extern "C" { @@ -328,6 +329,10 @@ struct BlueSkyCloudLogState { GSList *writeback_list; // Items which are being serialized right now GList *pending_segments; // Segments which are being uploaded now + int uploads_pending; // Count of uploads in progress, not completed + GMutex *uploads_pending_lock; + GCond *uploads_pending_cond; + /* What is the most recent sequence number written by the cleaner which we * have processed and incorporated into our own log? This gets * incorporated into the version vector written out with our checkpoint @@ -417,6 +422,8 @@ void bluesky_log_finish_all(GList *log_items); BlueSkyCloudLog *bluesky_log_get_commit_point(BlueSkyFS *fs); void bluesky_log_write_commit_point(BlueSkyFS *fs, BlueSkyCloudLog *marker); +BlueSkyRCStr *bluesky_cachefile_map_raw(BlueSkyCacheFile *cachefile, + off_t offset, size_t size); BlueSkyRCStr *bluesky_log_map_object(BlueSkyCloudLog *item, gboolean map_data); void bluesky_mmap_unref(BlueSkyCacheFile *mmap); void bluesky_cachefile_unref(BlueSkyCacheFile *cachefile); @@ -430,7 +437,10 @@ void bluesky_replay(BlueSkyFS *fs); /* Used to track log segments that are being written to the cloud. */ typedef struct { - BlueSkyRCStr *data; + BlueSkyFS *fs; + char *key; /* File name for log segment in backend */ + GString *raw_data; /* Data before encryption */ + BlueSkyRCStr *data; /* Data after encryption */ GSList *items; GMutex *lock; GCond *cond; @@ -473,7 +483,8 @@ void bluesky_inode_map_minimize(BlueSkyFS *fs); gboolean bluesky_checkpoint_load(BlueSkyFS *fs); /* Merging of log state with the work of the cleaner. */ -void bluesky_cleaner_find_checkpoint(BlueSkyFS *fs); +void bluesky_cleaner_merge(BlueSkyFS *fs); +void bluesky_cleaner_thread_launch(BlueSkyFS *fs); #ifdef __cplusplus }