Exemple #1
0
static void dyn_fsync_force_flush(void)
{
	/* flush all outstanding buffers */
	wakeup_flusher_threads(0);
	sync_filesystems(0);
	sync_filesystems(1);
}
Exemple #2
0
/*
 * sync everything.  Start out by waking pdflush, because that writes back
 * all queues in parallel.
 */
static void do_sync(void)
{
	wakeup_flusher_threads(0, WB_REASON_SYNC);
	sync_filesystems(0);
	sync_filesystems(1);
	if (unlikely(laptop_mode))
		laptop_sync_completion();
	return;
}
Exemple #3
0
static void dyn_fsync_early_suspend(struct early_suspend *h)
{
	mutex_lock(&fsync_mutex);
	if (dyn_fsync_active) {
	early_suspend_active = true;
#if 1
	wakeup_flusher_threads(0);
	sync_filesystems(0);
	sync_filesystems(1);
#endif
	}
	mutex_unlock(&fsync_mutex);
}
Exemple #4
0
static void dyn_fsync_early_suspend(struct early_suspend *h)
{
	mutex_lock(&fsync_mutex);
	if (dyn_fsync_active) {
		early_suspend_active = true;
#if 1
		/* flush all outstanding buffers */
		wakeup_flusher_threads(0, WB_REASON_SYNC);
		sync_filesystems(0);
		sync_filesystems(1);
#endif
	}
	mutex_unlock(&fsync_mutex);
}
Exemple #5
0
/*
 * Sync everything. We start by waking flusher threads so that most of
 * writeback runs on all devices in parallel. Then we sync all inodes reliably
 * which effectively also waits for all flusher threads to finish doing
 * writeback. At this point all data is on disk so metadata should be stable
 * and we tell filesystems to sync their metadata via ->sync_fs() calls.
 * Finally, we writeout all block devices because some filesystems (e.g. ext2)
 * just write metadata (such as inodes or bitmaps) to block device page cache
 * and do not sync it on their own in ->sync_fs().
 */
static void do_sync(void)
{
	int nowait = 0, wait = 1;

	wakeup_flusher_threads(0, WB_REASON_SYNC);
	iterate_supers(sync_inodes_one_sb, NULL);
	iterate_supers(sync_fs_one_sb, &nowait);
	iterate_supers(sync_fs_one_sb, &wait);
	iterate_bdevs(fdatawrite_one_bdev, NULL);
	iterate_bdevs(fdatawait_one_bdev, NULL);
	if (unlikely(laptop_mode))
		laptop_sync_completion();
	return;
}
static void do_laptop_sync(struct work_struct *work)
{
	wakeup_flusher_threads(0);
	kfree(work);
}
static void dyn_fsync_force_flush(void)
{
    /* flush all outstanding buffers */
    wakeup_flusher_threads(0, WB_REASON_SYNC);
    sync_filesystems();
}