lkml.org 
[lkml]   [2009]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] write-back: fix break condition
    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>



    \
     
     \ /
      Last update: 2009-02-10 01:37    [W:0.023 / U:29.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site