diff --git a/fs/sync.c b/fs/sync.c
index dd200025af8521d65e7bf28efceaece55994c59d..3422ba61d86dcad558fd47d59756b411bfae7a81 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -112,8 +112,13 @@ static void sync_filesystems(int wait)
 	mutex_unlock(&mutex);
 }
 
+/*
+ * sync everything.  Start out by waking pdflush, because that writes back
+ * all queues in parallel.
+ */
 SYSCALL_DEFINE0(sync)
 {
+	wakeup_pdflush(0);
 	sync_filesystems(0);
 	sync_filesystems(1);
 	if (unlikely(laptop_mode))