X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fimap.c;h=5d5be8a2559e5b01b2e886adae4b2850e7a69555;hb=827d4b966414c7804057e1c5352b2bcbe192d3c4;hp=cc8f1ba63b289b9038f903ef5bb5283a13b46cad;hpb=85926e10780a15fec8f4785329df8ab59a234e0c;p=bluesky.git diff --git a/bluesky/imap.c b/bluesky/imap.c index cc8f1ba..5d5be8a 100644 --- a/bluesky/imap.c +++ b/bluesky/imap.c @@ -156,6 +156,7 @@ static void bluesky_inode_map_serialize_section(BlueSkyFS *fs, BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs) { + gboolean updated = FALSE; GString *buf = g_string_new(""); BlueSkyCloudLog *log = bluesky_cloudlog_new(fs, NULL); log->type = LOGTYPE_CHECKPOINT; @@ -169,15 +170,23 @@ BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs) inum = GUINT64_TO_LE(range->end); g_string_append_len(buf, (const char *)&inum, sizeof(inum)); - if (range->serialized == NULL) + if (range->serialized == NULL) { bluesky_inode_map_serialize_section(fs, range); + updated = TRUE; + } bluesky_cloudlog_ref(range->serialized); g_array_append_val(log->links, range->serialized); i = g_sequence_iter_next(i); } log->data = bluesky_string_new_from_gstring(buf); - return log; + + if (updated) { + return log; + } else { + bluesky_cloudlog_unref(log); + return NULL; + } } /* Reconstruct the inode map from data stored in the cloud. */