Re: ext4-mm-delalloc-ext4-lock-reverse-fix

From: Mingming Cao
Date: Mon May 19 2008 - 13:55:16 EST


On Mon, 2008-05-19 at 17:24 +0200, Jiri Slaby wrote:
> Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> > On Mon, 19 May 2008 15:15:09 +0800 "Dave Young" <hidave.darkstar@xxxxxxxxx> wrote:
> >
> > > Hi,
> > >
> > > With 2.6.26-rc2-mm1 I need to sync frequently. It's not normal as my
> > > understanding.
> > >
> > > 1. scp a big file from a lan server. Firstly the speed is about 8M/s,
> > > but the speed will slow down to 100K/s at last. After I exec "sync",
> > > the speed will restore.
> > >
> > > Is this a known issue?
> > >
> >
> > Yes, probably related to the "mkfs takes forever" problem. I haven't
> > looked into it yet. Nor has anyone else afaik.
>
> Absolutely not sure what this breaks in ext4, but fixes the problem for me:
> ---
> mm/page-writeback.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/mm/page-writeback.c b/mm/page-writeback.c
> index 040bc7c..789b6ad 100644
> --- a/mm/page-writeback.c
> +++ b/mm/page-writeback.c
> @@ -881,7 +881,7 @@ int write_cache_pages(struct address_space *mapping,
> pagevec_init(&pvec, 0);
> if (wbc->range_cyclic) {
> index = mapping->writeback_index; /* Start from prev offset */
> - end = wbc->range_end >> PAGE_CACHE_SHIFT;
> + end = -1;
> } else {
> index = wbc->range_start >> PAGE_CACHE_SHIFT;
> end = wbc->range_end >> PAGE_CACHE_SHIFT;

Thanks, the patch does fixed the regression .

In the delalloc-ext4-lock-reverse.patch. It wants the
write_cache_pages() to do incremental writeout within the reserved
journal credits in case of delalyed allocation(turns on cyclic mode and
remembers starts from writeback_index). If the writeout caller sets the
range_end, it should not flushing to the end of the file in the case of
range_cyclic mode. The patch above fix the regression but makes possible
that we write too much.


I'd say drop the delalloc-ext4-lock-reverse.patch for now, will re-think
of the delayed allocation support for page-journal-lock reserve method.

Mingming







--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/