Messages in this thread Patch in this message | | | From | Federico Cuello <> | Subject | [PATCH] write-back: fix break condition | Date | Sat, 7 Feb 2009 01:33:30 -0200 |
| |
Commit 673353723e7a6550625fb719059c5f31cfaecd18 fixed nr_to_write counter, but didn't set the break condition properly.
If nr_to_write == 0 after being decremented it will loop one more time before setting done = 1 and breaking the loop. --- mm/page-writeback.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-)
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)) { -- 1.6.1.2
| |