lkml.org 
[lkml]   [2009]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] write-back: fix break condition
    * Nick Piggin <npiggin@suse.de> [2009-02-10 01:34]:
    > On Mon, Feb 09, 2009 at 03:21:40PM -0800, Andrew Morton wrote:

    > > Thanks, but please do cc the people who were involved with a patch when
    > > you find a problem with it!

    > > On Sat, 7 Feb 2009 01:33:30 -0200
    > > Federico Cuello <fedux@lugmen.org.ar> wrote:

    > > > Commit 673353723e7a6550625fb719059c5f31cfaecd18 fixed nr_to_write
    > > > counter, but didn't set the break condition properly.

    > > It's actually commit dcf6a79dda5cc2a2bec183e50d829030c0972aaa
    > > ("write-back: fix nr_to_write counter").

    > > > If nr_to_write == 0 after being decremented it will loop one more time
    > > > before setting done = 1 and breaking the loop.

    > > We prefer that patches include the author's Signed-off-by:, as per
    > > Documentation/SubmittingPatches, please.


    > > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c
    > > > index bb5fa2b..9e2ae50 100644
    > > > --- a/mm/page-writeback.c
    > > > +++ b/mm/page-writeback.c
    > > > @@ -981,20 +981,21 @@ continue_unlock:
    > > > }
    > > > }

    > > > - if (nr_to_write > 0)
    > > > + if (nr_to_write > 0) {
    > > > nr_to_write--;
    > > > - else if (wbc->sync_mode == WB_SYNC_NONE) {
    > > > - /*
    > > > - * We stop writing back only if we are not
    > > > - * doing integrity sync. In case of integrity
    > > > - * sync we have to keep going because someone
    > > > - * may be concurrently dirtying pages, and we
    > > > - * might have synced a lot of newly appeared
    > > > - * dirty pages, but have not synced all of the
    > > > - * old dirty pages.
    > > > - */
    > > > - done = 1;
    > > > - break;
    > > > + if (nr_to_write == 0 && wbc->sync_mode == WB_SYNC_NONE) {
    > > > + /*
    > > > + * We stop writing back only if we are not
    > > > + * doing integrity sync. In case of integrity
    > > > + * sync we have to keep going because someone
    > > > + * may be concurrently dirtying pages, and we
    > > > + * might have synced a lot of newly appeared
    > > > + * dirty pages, but have not synced all of the
    > > > + * old dirty pages.
    > > > + */
    > > > + done = 1;
    > > > + break;
    > > > + }
    > > > }

    > > > if (wbc->nonblocking && bdi_write_congested(bdi)) {

    > > Artem, Nick, please check?

    > Yes, this looks OK by me.

    > Acked-by: Nick Piggin <npiggin@suse.de>

    Shouldn't this go to stable 2.6.28, too ? They have not been in Cc for
    now. I think the problem was at first detected in 2.6.28.X, but it is
    not yet sure if it is solved or if this interacts with some ext4
    problems.

    --
    Damien Wyart


    \
     
     \ /
      Last update: 2009-02-10 07:27    [W:0.026 / U:0.108 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site