X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fcache.c;h=6a91873c3750002e9956782a802d886ecf7e11f2;hb=60b4792d65ba4b2a45733894f6a57e6581ddc487;hp=72c181a9220552349b0263ffcfdbe082f3a7d335;hpb=966a43ffed492d387e0d75e56c3984d9001c15b1;p=bluesky.git diff --git a/bluesky/cache.c b/bluesky/cache.c index 72c181a..6a91873 100644 --- a/bluesky/cache.c +++ b/bluesky/cache.c @@ -270,6 +270,7 @@ static gpointer flushd_task(BlueSkyFS *fs) return NULL; flushd_dirty(fs); flushd_clean(fs); + bluesky_cloudlog_write_log(fs); g_mutex_unlock(fs->flushd_lock); return NULL; @@ -295,3 +296,22 @@ void bluesky_flushd_invoke_conditional(BlueSkyFS *fs) bluesky_flushd_invoke(fs); } + +/* Start a perpetually-running thread that flushes the cache occasionally. */ +static gpointer flushd_thread(BlueSkyFS *fs) +{ + while (TRUE) { + bluesky_flushd_invoke(fs); + struct timespec delay; + delay.tv_sec = 2; + delay.tv_nsec = 0; + nanosleep(&delay, NULL); + } + + return NULL; +} + +void bluesky_flushd_thread_launch(BlueSkyFS *fs) +{ + g_thread_create((GThreadFunc)flushd_thread, fs, FALSE, NULL); +}