Hi Dmitry&Theodore,
Someone said without the following patch on lts 3.10 kernel (which used as android base kernel). the write maybe very very slow, needs 1 or 2 seconds to finish.
I quick looked this patch, seems it's no harm for a normal fs function. but still don't know why it is helpful. So do you remember why you commit this change at that time?
Thanks Alex
ommit 7afe5aa59ed3da7b6161617e7f157c7c680dc41e Author: Dmitry Monakhov dmonakhov@openvz.org Date: Wed Aug 28 14:30:47 2013 -0400
ext4: convert write_begin methods to stable_page_writes semantics
Use wait_for_stable_page() instead of wait_on_page_writeback()
Signed-off-by: Dmitry Monakhov dmonakhov@openvz.org Signed-off-by: "Theodore Ts'o" tytso@mit.edu Reviewed-by: Jan Kara jack@suse.cz
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index fc4051e..47c8e46 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -969,7 +969,8 @@ retry_journal: ext4_journal_stop(handle); goto retry_grab; } - wait_on_page_writeback(page); + /* In case writeback began while the page was unlocked */ + wait_for_stable_page(page);
if (ext4_should_dioread_nolock(inode)) ret = __block_write_begin(page, pos, len, ext4_get_block_write); @@ -2678,7 +2679,7 @@ retry_journal: goto retry_grab; } /* In case writeback began while the page was unlocked */ - wait_on_page_writeback(page); + wait_for_stable_page(page);
ret = __block_write_begin(page, pos, len, ext4_da_get_block_prep); if (ret < 0) { ~