On Mon, Mar 03, 2014 at 11:53:28PM +0100, Jan Kara wrote: > When doing filesystem wide sync, there's no need to force transaction > commit (or synchronously write inode buffer) separately for each inode > because ext4_sync_fs() takes care of forcing commit at the end (VFS > takes care of flushing buffer cache, respectively). Most of the time > this slowness doesn't manifest because previous WB_SYNC_NONE writeback > doesn't leave much to write but when there are processes aggressively > creating new files and several filesystems to sync, the sync slowness > can be noticeable. In the following test script sync(1) takes around 6 > minutes when there are two ext4 filesystems mounted on a standard SATA > drive. After this patch sync takes a couple of seconds so we have about > two orders of magnitude improvement. > > function run_writers > { > for (( i = 0; i < 10; i++ )); do > mkdir $1/dir$i > for (( j = 0; j < 40000; j++ )); do > dd if=/dev/zero of=$1/dir$i/$j bs=4k count=4 &>/dev/null > done & > done > } > > for dir in "$@"; do > run_writers $dir > done > > sleep 40 > time sync > > Signed-off-by: Jan Kara <jack@xxxxxxx> Looks good, thanks for the patch! - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html