Jan Kara 14da920014 fs: Protect write paths by sb_start_write - sb_end_write
There are several entry points which dirty pages in a filesystem.  mmap
(handled by block_page_mkwrite()), buffered write (handled by
__generic_file_aio_write()), splice write (generic_file_splice_write),
truncate, and fallocate (these can dirty last partial page - handled inside
each filesystem separately). Protect these places with sb_start_write() and
sb_end_write().

->page_mkwrite() calls are particularly complex since they are called with
mmap_sem held and thus we cannot use standard sb_start_write() due to lock
ordering constraints. We solve the problem by using a special freeze protection
sb_start_pagefault() which ranks below mmap_sem.

BugLink: https://bugs.launchpad.net/bugs/897421
Tested-by: Kamal Mostafa <kamal@canonical.com>
Tested-by: Peter M. Petrakis <peter.petrakis@canonical.com>
Tested-by: Dann Frazier <dann.frazier@canonical.com>
Tested-by: Massimo Morana <massimo.morana@canonical.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-07-31 09:45:47 +04:00
..
2012-05-29 23:28:33 -04:00
2012-01-03 22:54:56 -05:00
2012-05-30 08:48:13 -07:00
2011-07-26 16:49:47 -07:00
2012-06-20 14:39:36 -07:00
2010-05-21 18:31:21 -04:00
2012-06-04 17:17:31 -04:00
2012-06-20 14:39:36 -07:00
2012-06-20 14:39:36 -07:00
2012-06-20 14:39:36 -07:00
2012-06-20 14:39:36 -07:00
2011-05-20 12:50:29 -07:00
2012-05-29 16:22:19 -07:00
2012-07-14 16:34:47 +04:00
2012-05-29 16:22:28 -07:00
2012-05-29 16:22:23 -07:00
2012-06-01 10:37:18 -04:00