Hello, Tejun, I have found that system call sync may return even if dirty pages still exist. This is caused by the following case: sync -> sync_inodes_sb() -> bdi_split_work_to_wbs() queue works for each wb -> wb_wait_for_completions() wait for these works to complete. >>>>>> race window. Writeback thread found it should switch to another new wb while doing foreign cgroup detect. So a new wb is created, and the inodes are move from old wb to the new one. The writeback work for old wb is done, so the sync process is woken while the inodes with dirty pages are still queued in new wb. regards, Jiufei -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html