Work to allow mmap-ed log entries to be used for data blocks.
[bluesky.git] / bluesky / cloudlog.c
index b98c233..d7cea63 100644 (file)
@@ -242,3 +242,20 @@ void bluesky_cloudlog_write_log(BlueSkyFS *fs)
 
     state->data = NULL;
 }
+
+/* Ensure that a cloud log item is loaded in memory, and if not read it in.
+ * TODO: Make asynchronous, and make this also fetch from the cloud.  Right now
+ * we only read from the log.  Log item must be locked. */
+void bluesky_cloudlog_fetch(BlueSkyCloudLog *log)
+{
+    if (log->data != NULL)
+        return;
+
+    g_print("Re-mapping log entry %d/%d/%d...\n",
+            log->log_seq, log->log_offset, log->log_size);
+
+    g_assert(log->location_flags & CLOUDLOG_JOURNAL);
+
+    log->data = bluesky_log_map_object(log->fs->log, log->log_seq,
+                                       log->log_offset, log->log_size);
+}