X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fcache.c;h=f8977731ba15ad45fd09247ce1c201df37f45e3f;hb=97517d1bbc647846003d1a49b6ae97c69d856b90;hp=2c1bc92c32a39f78ad639977c916923830caf613;hpb=83fd6b61a6e092a22d4d5e59ed95f05f5e287f11;p=bluesky.git diff --git a/bluesky/cache.c b/bluesky/cache.c index 2c1bc92..f897773 100644 --- a/bluesky/cache.c +++ b/bluesky/cache.c @@ -163,6 +163,24 @@ static void drop_caches(BlueSkyInode *inode) { if (inode->type == BLUESKY_REGULAR) bluesky_file_drop_cached(inode); + + BlueSkyCloudLog *log = inode->committed_item; + if (log != NULL) { + g_mutex_lock(log->lock); + if (log->data != NULL + && g_atomic_int_get(&log->data_lock_count) == 0 + && (log->location_flags != 0)) + { + bluesky_cloudlog_stats_update(log, -1); + bluesky_string_unref(log->data); + log->data = NULL; + bluesky_cloudlog_stats_update(log, 1); + } + if (log->location_flags & CLOUDLOG_CLOUD) { + log->location_flags &= ~CLOUDLOG_JOURNAL; + } + g_mutex_unlock(log->lock); + } } /* Drop clean data from the cache if needed. Clean data should generally be