* persistent storage. */
void bluesky_serialize_superblock(GString *out, BlueSkyFS *fs);
BlueSkyFS *bluesky_deserialize_superblock(const gchar *buf);
* persistent storage. */
void bluesky_serialize_superblock(GString *out, BlueSkyFS *fs);
BlueSkyFS *bluesky_deserialize_superblock(const gchar *buf);
gboolean bluesky_deserialize_inode(BlueSkyInode *inode, const gchar *buf);
/* Storage layer. Requests can be performed asynchronously, so these objects
gboolean bluesky_deserialize_inode(BlueSkyInode *inode, const gchar *buf);
/* Storage layer. Requests can be performed asynchronously, so these objects
// TODO: Location in journal/cache
int log_seq, log_offset, log_size;
// TODO: Location in journal/cache
int log_seq, log_offset, log_size;
- // Pointers to other objects
- GArray *pointers;
+ // Pointers to other objects. Each link counts towards the reference count
+ // of the pointed-to object. To avoid memory leaks there should be no
+ // cycles in the reference graph.
+ GArray *links;
- // Serialized data, if available in memory (otherwise NULL).
+ // Serialized data, if available in memory (otherwise NULL), and a lock
+ // count which tracks if there are users that require the data to be kept
+ // around.
void bluesky_cloudlog_unref(BlueSkyCloudLog *log);
void bluesky_cloudlog_sync(BlueSkyCloudLog *log);
void bluesky_cloudlog_insert(BlueSkyCloudLog *log);
void bluesky_cloudlog_unref(BlueSkyCloudLog *log);
void bluesky_cloudlog_sync(BlueSkyCloudLog *log);
void bluesky_cloudlog_insert(BlueSkyCloudLog *log);
BlueSkyLog *bluesky_log_new(const char *log_directory);
void bluesky_log_item_submit(BlueSkyCloudLog *item, BlueSkyLog *log);
void bluesky_log_finish_all(GList *log_items);
BlueSkyRCStr *bluesky_log_map_object(BlueSkyLog *log, int log_seq,
int log_offset, int log_size);
BlueSkyLog *bluesky_log_new(const char *log_directory);
void bluesky_log_item_submit(BlueSkyCloudLog *item, BlueSkyLog *log);
void bluesky_log_finish_all(GList *log_items);
BlueSkyRCStr *bluesky_log_map_object(BlueSkyLog *log, int log_seq,
int log_offset, int log_size);