From: Dmitry Monakhov <dmonakhov@openvz.org>
To: Alex Shi <alex.shi@linaro.org>, Theodore Ts'o <tytso@mit.edu>,
Jan Kara <jack@suse.cz>,
Linaro Kernel <linaro-kernel@lists.linaro.org>
Cc: stable@vger.kernel.org
Subject: Re: a old issue of ext4 on lts 3.10
Date: Thu, 14 May 2015 23:36:31 +0300 [thread overview]
Message-ID: <87bnhmrj5c.fsf@openvz.org> (raw)
In-Reply-To: <5554B3E3.6090407@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 2421 bytes --]
Alex Shi <alex.shi@linaro.org> writes:
> 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.
In fact this was an optimization.
wait_for_stable_page() is actually and optimized wait_on_page_writeback()
see:
void wait_for_stable_page(struct page *page)
{
struct address_space *mapping = page_mapping(page);
struct backing_dev_info *bdi =
mapping->backing_dev_info;
if (!bdi_cap_stable_pages_required(bdi))
return;
wait_on_page_writeback(page);
}
It is very unlikely the patch provokes such huge slowdown.
Can you please repeat your measurements and double check your evidence.
>
> 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) {
> ~
>
> --
> Thanks
> Alex
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]
next prev parent reply other threads:[~2015-05-14 20:38 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-14 14:40 a old issue of ext4 on lts 3.10 Alex Shi
2015-05-14 20:36 ` Dmitry Monakhov [this message]
2015-05-17 15:19 ` Alex Shi
2015-05-18 6:41 ` Jan Kara
2015-05-20 3:04 ` Alex Shi
2015-05-18 6:21 ` Jan Kara
2015-05-20 2:58 ` Alex Shi
2015-05-21 9:28 ` Alex Shi
2015-05-21 16:51 ` gregkh
2015-05-22 8:26 ` Jan Kara
2015-05-24 2:54 ` Alex Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bnhmrj5c.fsf@openvz.org \
--to=dmonakhov@openvz.org \
--cc=alex.shi@linaro.org \
--cc=jack@suse.cz \
--cc=linaro-kernel@lists.linaro.org \
--cc=stable@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.