aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page-writeback.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r--mm/page-writeback.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 2cb01f6ec5d0..632b46479c94 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -927,7 +927,7 @@ retry:
927 break; 927 break;
928 } 928 }
929 929
930 done_index = page->index + 1; 930 done_index = page->index;
931 931
932 lock_page(page); 932 lock_page(page);
933 933
@@ -977,6 +977,7 @@ continue_unlock:
977 * not be suitable for data integrity 977 * not be suitable for data integrity
978 * writeout). 978 * writeout).
979 */ 979 */
980 done_index = page->index + 1;
980 done = 1; 981 done = 1;
981 break; 982 break;
982 } 983 }
@@ -1211,6 +1212,17 @@ int set_page_dirty(struct page *page)
1211 1212
1212 if (likely(mapping)) { 1213 if (likely(mapping)) {
1213 int (*spd)(struct page *) = mapping->a_ops->set_page_dirty; 1214 int (*spd)(struct page *) = mapping->a_ops->set_page_dirty;
1215 /*
1216 * readahead/lru_deactivate_page could remain
1217 * PG_readahead/PG_reclaim due to race with end_page_writeback
1218 * About readahead, if the page is written, the flags would be
1219 * reset. So no problem.
1220 * About lru_deactivate_page, if the page is redirty, the flag
1221 * will be reset. So no problem. but if the page is used by readahead
1222 * it will confuse readahead and make it restart the size rampup
1223 * process. But it's a trivial problem.
1224 */
1225 ClearPageReclaim(page);
1214#ifdef CONFIG_BLOCK 1226#ifdef CONFIG_BLOCK
1215 if (!spd) 1227 if (!spd)
1216 spd = __set_page_dirty_buffers; 1228 spd = __set_page_dirty_buffers;
@@ -1266,7 +1278,6 @@ int clear_page_dirty_for_io(struct page *page)
1266 1278
1267 BUG_ON(!PageLocked(page)); 1279 BUG_ON(!PageLocked(page));
1268 1280
1269 ClearPageReclaim(page);
1270 if (mapping && mapping_cap_account_dirty(mapping)) { 1281 if (mapping && mapping_cap_account_dirty(mapping)) {
1271 /* 1282 /*
1272 * Yes, Virginia, this is indeed insane. 1283 * Yes, Virginia, this is indeed insane.