diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-02-12 07:08:57 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-02-12 07:08:57 -0500 |
| commit | 871cafcc962fa1655c44b4f0e54d4c5cc14e273c (patch) | |
| tree | fdb7bc65d2606c85b7be6c33ba0dfd5b4e472245 /mm/page-writeback.c | |
| parent | cf2592f59c0e8ed4308adbdb2e0a88655379d579 (diff) | |
| parent | b578f3fcca1e78624dfb5f358776e63711d7fda2 (diff) | |
Merge branch 'linus' into core/softlockup
Diffstat (limited to 'mm/page-writeback.c')
| -rw-r--r-- | mm/page-writeback.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index b493db7841dc..6106a5c7ed44 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
| @@ -209,7 +209,7 @@ int dirty_bytes_handler(struct ctl_table *table, int write, | |||
| 209 | struct file *filp, void __user *buffer, size_t *lenp, | 209 | struct file *filp, void __user *buffer, size_t *lenp, |
| 210 | loff_t *ppos) | 210 | loff_t *ppos) |
| 211 | { | 211 | { |
| 212 | int old_bytes = vm_dirty_bytes; | 212 | unsigned long old_bytes = vm_dirty_bytes; |
| 213 | int ret; | 213 | int ret; |
| 214 | 214 | ||
| 215 | ret = proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos); | 215 | ret = proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos); |
| @@ -1051,13 +1051,25 @@ continue_unlock: | |||
| 1051 | } | 1051 | } |
| 1052 | } | 1052 | } |
| 1053 | 1053 | ||
| 1054 | if (wbc->sync_mode == WB_SYNC_NONE) { | 1054 | if (nr_to_write > 0) { |
| 1055 | wbc->nr_to_write--; | 1055 | nr_to_write--; |
| 1056 | if (wbc->nr_to_write <= 0) { | 1056 | if (nr_to_write == 0 && |
| 1057 | wbc->sync_mode == WB_SYNC_NONE) { | ||
| 1058 | /* | ||
| 1059 | * We stop writing back only if we are | ||
| 1060 | * not doing integrity sync. In case of | ||
| 1061 | * integrity sync we have to keep going | ||
| 1062 | * because someone may be concurrently | ||
| 1063 | * dirtying pages, and we might have | ||
| 1064 | * synced a lot of newly appeared dirty | ||
| 1065 | * pages, but have not synced all of the | ||
| 1066 | * old dirty pages. | ||
| 1067 | */ | ||
| 1057 | done = 1; | 1068 | done = 1; |
| 1058 | break; | 1069 | break; |
| 1059 | } | 1070 | } |
| 1060 | } | 1071 | } |
| 1072 | |||
| 1061 | if (wbc->nonblocking && bdi_write_congested(bdi)) { | 1073 | if (wbc->nonblocking && bdi_write_congested(bdi)) { |
| 1062 | wbc->encountered_congestion = 1; | 1074 | wbc->encountered_congestion = 1; |
| 1063 | done = 1; | 1075 | done = 1; |
