diff options
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r-- | mm/page-writeback.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 5fa63bdf52e4..b3dbb8040ed5 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -835,7 +835,6 @@ int write_cache_pages(struct address_space *mapping, | |||
835 | pgoff_t done_index; | 835 | pgoff_t done_index; |
836 | int cycled; | 836 | int cycled; |
837 | int range_whole = 0; | 837 | int range_whole = 0; |
838 | long nr_to_write = wbc->nr_to_write; | ||
839 | 838 | ||
840 | pagevec_init(&pvec, 0); | 839 | pagevec_init(&pvec, 0); |
841 | if (wbc->range_cyclic) { | 840 | if (wbc->range_cyclic) { |
@@ -935,11 +934,10 @@ continue_unlock: | |||
935 | done = 1; | 934 | done = 1; |
936 | break; | 935 | break; |
937 | } | 936 | } |
938 | } | 937 | } |
939 | 938 | ||
940 | if (nr_to_write > 0) { | 939 | if (wbc->nr_to_write > 0) { |
941 | nr_to_write--; | 940 | if (--wbc->nr_to_write == 0 && |
942 | if (nr_to_write == 0 && | ||
943 | wbc->sync_mode == WB_SYNC_NONE) { | 941 | wbc->sync_mode == WB_SYNC_NONE) { |
944 | /* | 942 | /* |
945 | * We stop writing back only if we are | 943 | * We stop writing back only if we are |
@@ -970,11 +968,8 @@ continue_unlock: | |||
970 | end = writeback_index - 1; | 968 | end = writeback_index - 1; |
971 | goto retry; | 969 | goto retry; |
972 | } | 970 | } |
973 | if (!wbc->no_nrwrite_index_update) { | 971 | if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) |
974 | if (wbc->range_cyclic || (range_whole && nr_to_write > 0)) | 972 | mapping->writeback_index = done_index; |
975 | mapping->writeback_index = done_index; | ||
976 | wbc->nr_to_write = nr_to_write; | ||
977 | } | ||
978 | 973 | ||
979 | return ret; | 974 | return ret; |
980 | } | 975 | } |