gchar *bluesky_lowercase(const gchar *s);
-/* Reference-counted blocks of memory, used for passing data in and out of
- * storage backends and in other places. This may also refer to read-only
- * mmaped data. */
-typedef struct {
- gint refcount;
- const char *addr;
- size_t len;
-} BlueSkyMmap;
+struct _BlueSkyMmap;
+typedef struct _BlueSkyMmap BlueSkyMmap;
typedef struct {
gint refcount;
#define BLUESKY_MAX_FILE_SIZE (BLUESKY_BLOCK_SIZE << 24)
typedef enum {
BLUESKY_BLOCK_ZERO = 0, /* Data is all zeroes, not explicitly stored */
- BLUESKY_BLOCK_REF = 1, /* Reference to key/value store, not cached */
- BLUESKY_BLOCK_CACHED = 2, /* Data is cached in memory, clean */
- BLUESKY_BLOCK_DIRTY = 3, /* Data needs to be committed to store */
+ BLUESKY_BLOCK_REF = 1, /* Reference to cloud log item, data clean */
+ BLUESKY_BLOCK_DIRTY = 2, /* Data needs to be committed to store */
} BlueSkyBlockType;
typedef struct {
BlueSkyBlockType type;
- BlueSkyRCStr *data; /* Pointer to data in memory if cached */
- BlueSkyCloudLog *cloudref; /* Reference to cloud log entry with data */
+ BlueSkyCloudLog *ref; /* if REF: cloud log entry with data */
+ BlueSkyRCStr *dirty; /* if DIRTY: raw data in memory */
} BlueSkyBlock;
BlueSkyFS *bluesky_init_fs(gchar *name, BlueSkyStore *store);