X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fcleaner.c;h=a892e723473b7d1fd816e65f7745db347c8a1c65;hb=2dc3639e4e8d1efee451d1e29b51a09b9c3bdc91;hp=0fc39dfe87185fe46ae5920f55982e4162d9203a;hpb=3361e337c993f58adefddbf52621e5197229bb84;p=bluesky.git diff --git a/bluesky/cleaner.c b/bluesky/cleaner.c index 0fc39df..a892e72 100644 --- a/bluesky/cleaner.c +++ b/bluesky/cleaner.c @@ -115,7 +115,8 @@ static BlueSkyCleanerItem *bluesky_cleaner_find_checkpoint(BlueSkyFS *fs) if (last_segment == NULL) return NULL; - g_print("Last cloud log segment: %s\n", last_segment); + g_print("Last cloud log segment: %s (processed up to %d)\n", + last_segment, fs->log_state->latest_cleaner_seq_seen); int seq = atoi(last_segment + 13); g_free(last_segment); @@ -156,7 +157,7 @@ static BlueSkyCleanerItem *bluesky_cleaner_find_checkpoint(BlueSkyFS *fs) BlueSkyCleanerItem *checkpoint = bluesky_cleaner_deserialize(data); checkpoint->location.directory = BLUESKY_CLOUD_DIR_CLEANER; - checkpoint->location.directory = seq; + checkpoint->location.sequence = seq; bluesky_string_unref(data); return checkpoint; @@ -244,8 +245,8 @@ static void merge_inode(BlueSkyFS *fs, BlueSkyCleanerItem *cleaner_inode) BlueSkyCloudLog *proxy_item = entry->item; g_mutex_lock(proxy_item->lock); - BlueSkyCloudPointer proxy_location = entry->item->location; - BlueSkyCloudID proxy_id = entry->item->id; + //BlueSkyCloudPointer proxy_location = entry->item->location; + //BlueSkyCloudID proxy_id = entry->item->id; g_mutex_unlock(proxy_item->lock); g_mutex_unlock(fs->lock); @@ -302,6 +303,12 @@ void bluesky_cleaner_merge(BlueSkyFS *fs) return; } + if (checkpoint->type != LOGTYPE_CHECKPOINT) { + g_warning("Last cleaner object not a checkpoint; cleaning probably in progress."); + bluesky_cleaner_item_free(checkpoint); + return; + } + /* Iterate over each of the inode map sections in the checkpoint */ for (int i = 0; i < checkpoint->links->len; i++) { BlueSkyCleanerLink *link = &g_array_index(checkpoint->links, @@ -331,7 +338,7 @@ void bluesky_cleaner_merge(BlueSkyFS *fs) bluesky_cleaner_item_free(imap); } - fs->log_state->latest_cleaner_seq_seen = checkpoint->location.directory; + fs->log_state->latest_cleaner_seq_seen = checkpoint->location.sequence; bluesky_cleaner_item_free(checkpoint); }