]> git.baikalelectronics.ru Git - kernel.git/commit
writeback: fix WB_SYNC_NONE writeback from umount
authorJens Axboe <jens.axboe@oracle.com>
Mon, 17 May 2010 10:55:07 +0000 (12:55 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 17 May 2010 10:55:07 +0000 (12:55 +0200)
commit803657c3033845c235b467f374e7f28a61f5030a
treee470697e43ffe4028ac81c17d3ef90ee9f30bcfb
parent3ef366bd08c4be1853dfbb2a9646bb1a657df47d
writeback: fix WB_SYNC_NONE writeback from umount

When umount calls sync_filesystem(), we first do a WB_SYNC_NONE
writeback to kick off writeback of pending dirty inodes, then follow
that up with a WB_SYNC_ALL to wait for it. Since umount already holds
the sb s_umount mutex, WB_SYNC_NONE ends up doing nothing and all
writeback happens as WB_SYNC_ALL. This can greatly slow down umount,
since WB_SYNC_ALL writeback is a data integrity operation and thus
a bigger hammer than simple WB_SYNC_NONE. For barrier aware file systems
it's a lot slower.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fs/fs-writeback.c
fs/sync.c
include/linux/backing-dev.h
include/linux/writeback.h
mm/page-writeback.c