+
+ /* If the system is under heavy memory pressure, actually delay execution
+ * so the flush daemon can catch up. */
+ while (g_atomic_int_get(&fs->cache_dirty)
+ + g_atomic_int_get(&fs->cache_log_dirty)
+ > bluesky_watermark_high_dirty) {
+ g_log("bluesky/flushd", G_LOG_LEVEL_DEBUG,
+ "Waiting due to memory pressure, dirty=%d + %d",
+ g_atomic_int_get(&fs->cache_dirty),
+ g_atomic_int_get(&fs->cache_log_dirty));
+ g_mutex_lock(fs->lock);
+ g_cond_wait(fs->flushd_cond, fs->lock);
+ g_mutex_unlock(fs->lock);
+ }