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.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 8bef063125b1..69b5fbabc8bd 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -158,37 +158,37 @@ static void update_completion_period(void)
158} 158}
159 159
160int dirty_background_ratio_handler(struct ctl_table *table, int write, 160int dirty_background_ratio_handler(struct ctl_table *table, int write,
161 struct file *filp, void __user *buffer, size_t *lenp, 161 void __user *buffer, size_t *lenp,
162 loff_t *ppos) 162 loff_t *ppos)
163{ 163{
164 int ret; 164 int ret;
165 165
166 ret = proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos); 166 ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
167 if (ret == 0 && write) 167 if (ret == 0 && write)
168 dirty_background_bytes = 0; 168 dirty_background_bytes = 0;
169 return ret; 169 return ret;
170} 170}
171 171
172int dirty_background_bytes_handler(struct ctl_table *table, int write, 172int dirty_background_bytes_handler(struct ctl_table *table, int write,
173 struct file *filp, void __user *buffer, size_t *lenp, 173 void __user *buffer, size_t *lenp,
174 loff_t *ppos) 174 loff_t *ppos)
175{ 175{
176 int ret; 176 int ret;
177 177
178 ret = proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos); 178 ret = proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
179 if (ret == 0 && write) 179 if (ret == 0 && write)
180 dirty_background_ratio = 0; 180 dirty_background_ratio = 0;
181 return ret; 181 return ret;
182} 182}
183 183
184int dirty_ratio_handler(struct ctl_table *table, int write, 184int dirty_ratio_handler(struct ctl_table *table, int write,
185 struct file *filp, void __user *buffer, size_t *lenp, 185 void __user *buffer, size_t *lenp,
186 loff_t *ppos) 186 loff_t *ppos)
187{ 187{
188 int old_ratio = vm_dirty_ratio; 188 int old_ratio = vm_dirty_ratio;
189 int ret; 189 int ret;
190 190
191 ret = proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos); 191 ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
192 if (ret == 0 && write && vm_dirty_ratio != old_ratio) { 192 if (ret == 0 && write && vm_dirty_ratio != old_ratio) {
193 update_completion_period(); 193 update_completion_period();
194 vm_dirty_bytes = 0; 194 vm_dirty_bytes = 0;
@@ -198,13 +198,13 @@ int dirty_ratio_handler(struct ctl_table *table, int write,
198 198
199 199
200int dirty_bytes_handler(struct ctl_table *table, int write, 200int dirty_bytes_handler(struct ctl_table *table, int write,
201 struct file *filp, void __user *buffer, size_t *lenp, 201 void __user *buffer, size_t *lenp,
202 loff_t *ppos) 202 loff_t *ppos)
203{ 203{
204 unsigned long old_bytes = vm_dirty_bytes; 204 unsigned long old_bytes = vm_dirty_bytes;
205 int ret; 205 int ret;
206 206
207 ret = proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos); 207 ret = proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
208 if (ret == 0 && write && vm_dirty_bytes != old_bytes) { 208 if (ret == 0 && write && vm_dirty_bytes != old_bytes) {
209 update_completion_period(); 209 update_completion_period();
210 vm_dirty_ratio = 0; 210 vm_dirty_ratio = 0;
@@ -690,9 +690,9 @@ static DEFINE_TIMER(laptop_mode_wb_timer, laptop_timer_fn, 0, 0);
690 * sysctl handler for /proc/sys/vm/dirty_writeback_centisecs 690 * sysctl handler for /proc/sys/vm/dirty_writeback_centisecs
691 */ 691 */
692int dirty_writeback_centisecs_handler(ctl_table *table, int write, 692int dirty_writeback_centisecs_handler(ctl_table *table, int write,
693 struct file *file, void __user *buffer, size_t *length, loff_t *ppos) 693 void __user *buffer, size_t *length, loff_t *ppos)
694{ 694{
695 proc_dointvec(table, write, file, buffer, length, ppos); 695 proc_dointvec(table, write, buffer, length, ppos);
696 return 0; 696 return 0;
697} 697}
698 698
@@ -1153,6 +1153,13 @@ int redirty_page_for_writepage(struct writeback_control *wbc, struct page *page)
1153EXPORT_SYMBOL(redirty_page_for_writepage); 1153EXPORT_SYMBOL(redirty_page_for_writepage);
1154 1154
1155/* 1155/*
1156 * Dirty a page.
1157 *
1158 * For pages with a mapping this should be done under the page lock
1159 * for the benefit of asynchronous memory errors who prefer a consistent
1160 * dirty state. This rule can be broken in some special cases,
1161 * but should be better not to.
1162 *
1156 * If the mapping doesn't provide a set_page_dirty a_op, then 1163 * If the mapping doesn't provide a set_page_dirty a_op, then
1157 * just fall through and assume that it wants buffer_heads. 1164 * just fall through and assume that it wants buffer_heads.
1158 */ 1165 */