} BlueSkyAsyncStatus;
struct BlueSkyNotifierList;
-typedef struct {
+typedef struct _BlueSkyStoreAsync BlueSkyStoreAsync;
+struct _BlueSkyStoreAsync {
BlueSkyStore *store;
GMutex *lock;
int result; /* Result code; 0 for success. */
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. */
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
void bluesky_inode_start_sync(BlueSkyInode *inode, BlueSkyStoreAsync *barrier);
+void bluesky_block_touch(BlueSkyInode *inode, uint64_t i);
+void bluesky_block_fetch(BlueSkyFS *fs, BlueSkyBlock *block,
+ BlueSkyStoreAsync *barrier);
void bluesky_block_flush(BlueSkyFS *fs, BlueSkyBlock *block,
BlueSkyStoreAsync *barrier);
void bluesky_file_flush(BlueSkyInode *inode, BlueSkyStoreAsync *barrier);