Jan Kara 0058f9658c ext4: make ext4_bio_write_page() use BH_Async_Write flags
So far ext4_bio_write_page() attached all the pages to ext4_io_end
structure.  This makes that structure pretty heavy (1 KB for pointers
+ 16 bytes per page attached to the bio).  Also later we would like to
share ext4_io_end structure among several bios in case IO to a single
extent needs to be split among several bios and pointing to pages from
ext4_io_end makes this complex.

We remove page pointers from ext4_io_end and use pointers from bio
itself instead.  This isn't as easy when blocksize < pagesize because
then we can have several bios in flight for a single page and we have
to be careful when to call end_page_writeback().  However this is a
known problem already solved by block_write_full_page() /
end_buffer_async_write() so we mimic its behavior here.  We mark
buffers going to disk with BH_Async_Write flag and in
ext4_bio_end_io() we check whether there are any buffers with
BH_Async_Write flag left.  If there are not, we can call
end_page_writeback().

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
2013-04-11 23:48:32 -04:00
..
2013-03-11 22:05:56 +01:00
2013-03-12 18:55:21 -07:00
2013-03-12 18:55:21 -07:00
2013-03-26 14:23:45 -07:00
2013-03-22 16:55:15 -04:00
2013-03-28 15:52:14 -07:00
2013-03-12 18:55:21 -07:00
2013-02-22 23:31:31 -05:00
2013-02-22 23:31:31 -05:00
2012-10-22 08:50:37 +03:00
2013-02-22 23:31:31 -05:00
2013-03-26 18:25:57 -04:00
2013-02-22 23:31:31 -05:00
2013-02-28 13:21:44 -08:00
2013-02-22 23:31:31 -05:00
2012-12-20 18:46:29 -05:00
2013-02-22 23:31:31 -05:00
2012-12-11 13:43:42 +09:00
2013-03-12 08:29:17 -07:00
2013-02-22 23:31:31 -05:00
2012-12-17 17:15:27 -08:00
2013-02-26 02:46:08 -05:00
2013-02-22 23:31:31 -05:00