xref: /openbmc/linux/mm/backing-dev.c (revision 9d749629)
1 
2 #include <linux/wait.h>
3 #include <linux/backing-dev.h>
4 #include <linux/kthread.h>
5 #include <linux/freezer.h>
6 #include <linux/fs.h>
7 #include <linux/pagemap.h>
8 #include <linux/mm.h>
9 #include <linux/sched.h>
10 #include <linux/module.h>
11 #include <linux/writeback.h>
12 #include <linux/device.h>
13 #include <trace/events/writeback.h>
14 
15 static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0);
16 
17 struct backing_dev_info default_backing_dev_info = {
18 	.name		= "default",
19 	.ra_pages	= VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE,
20 	.state		= 0,
21 	.capabilities	= BDI_CAP_MAP_COPY,
22 };
23 EXPORT_SYMBOL_GPL(default_backing_dev_info);
24 
25 struct backing_dev_info noop_backing_dev_info = {
26 	.name		= "noop",
27 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
28 };
29 EXPORT_SYMBOL_GPL(noop_backing_dev_info);
30 
31 static struct class *bdi_class;
32 
33 /*
34  * bdi_lock protects updates to bdi_list and bdi_pending_list, as well as
35  * reader side protection for bdi_pending_list. bdi_list has RCU reader side
36  * locking.
37  */
38 DEFINE_SPINLOCK(bdi_lock);
39 LIST_HEAD(bdi_list);
40 LIST_HEAD(bdi_pending_list);
41 
42 void bdi_lock_two(struct bdi_writeback *wb1, struct bdi_writeback *wb2)
43 {
44 	if (wb1 < wb2) {
45 		spin_lock(&wb1->list_lock);
46 		spin_lock_nested(&wb2->list_lock, 1);
47 	} else {
48 		spin_lock(&wb2->list_lock);
49 		spin_lock_nested(&wb1->list_lock, 1);
50 	}
51 }
52 
53 #ifdef CONFIG_DEBUG_FS
54 #include <linux/debugfs.h>
55 #include <linux/seq_file.h>
56 
57 static struct dentry *bdi_debug_root;
58 
59 static void bdi_debug_init(void)
60 {
61 	bdi_debug_root = debugfs_create_dir("bdi", NULL);
62 }
63 
64 static int bdi_debug_stats_show(struct seq_file *m, void *v)
65 {
66 	struct backing_dev_info *bdi = m->private;
67 	struct bdi_writeback *wb = &bdi->wb;
68 	unsigned long background_thresh;
69 	unsigned long dirty_thresh;
70 	unsigned long bdi_thresh;
71 	unsigned long nr_dirty, nr_io, nr_more_io;
72 	struct inode *inode;
73 
74 	nr_dirty = nr_io = nr_more_io = 0;
75 	spin_lock(&wb->list_lock);
76 	list_for_each_entry(inode, &wb->b_dirty, i_wb_list)
77 		nr_dirty++;
78 	list_for_each_entry(inode, &wb->b_io, i_wb_list)
79 		nr_io++;
80 	list_for_each_entry(inode, &wb->b_more_io, i_wb_list)
81 		nr_more_io++;
82 	spin_unlock(&wb->list_lock);
83 
84 	global_dirty_limits(&background_thresh, &dirty_thresh);
85 	bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh);
86 
87 #define K(x) ((x) << (PAGE_SHIFT - 10))
88 	seq_printf(m,
89 		   "BdiWriteback:       %10lu kB\n"
90 		   "BdiReclaimable:     %10lu kB\n"
91 		   "BdiDirtyThresh:     %10lu kB\n"
92 		   "DirtyThresh:        %10lu kB\n"
93 		   "BackgroundThresh:   %10lu kB\n"
94 		   "BdiDirtied:         %10lu kB\n"
95 		   "BdiWritten:         %10lu kB\n"
96 		   "BdiWriteBandwidth:  %10lu kBps\n"
97 		   "b_dirty:            %10lu\n"
98 		   "b_io:               %10lu\n"
99 		   "b_more_io:          %10lu\n"
100 		   "bdi_list:           %10u\n"
101 		   "state:              %10lx\n",
102 		   (unsigned long) K(bdi_stat(bdi, BDI_WRITEBACK)),
103 		   (unsigned long) K(bdi_stat(bdi, BDI_RECLAIMABLE)),
104 		   K(bdi_thresh),
105 		   K(dirty_thresh),
106 		   K(background_thresh),
107 		   (unsigned long) K(bdi_stat(bdi, BDI_DIRTIED)),
108 		   (unsigned long) K(bdi_stat(bdi, BDI_WRITTEN)),
109 		   (unsigned long) K(bdi->write_bandwidth),
110 		   nr_dirty,
111 		   nr_io,
112 		   nr_more_io,
113 		   !list_empty(&bdi->bdi_list), bdi->state);
114 #undef K
115 
116 	return 0;
117 }
118 
119 static int bdi_debug_stats_open(struct inode *inode, struct file *file)
120 {
121 	return single_open(file, bdi_debug_stats_show, inode->i_private);
122 }
123 
124 static const struct file_operations bdi_debug_stats_fops = {
125 	.open		= bdi_debug_stats_open,
126 	.read		= seq_read,
127 	.llseek		= seq_lseek,
128 	.release	= single_release,
129 };
130 
131 static void bdi_debug_register(struct backing_dev_info *bdi, const char *name)
132 {
133 	bdi->debug_dir = debugfs_create_dir(name, bdi_debug_root);
134 	bdi->debug_stats = debugfs_create_file("stats", 0444, bdi->debug_dir,
135 					       bdi, &bdi_debug_stats_fops);
136 }
137 
138 static void bdi_debug_unregister(struct backing_dev_info *bdi)
139 {
140 	debugfs_remove(bdi->debug_stats);
141 	debugfs_remove(bdi->debug_dir);
142 }
143 #else
144 static inline void bdi_debug_init(void)
145 {
146 }
147 static inline void bdi_debug_register(struct backing_dev_info *bdi,
148 				      const char *name)
149 {
150 }
151 static inline void bdi_debug_unregister(struct backing_dev_info *bdi)
152 {
153 }
154 #endif
155 
156 static ssize_t read_ahead_kb_store(struct device *dev,
157 				  struct device_attribute *attr,
158 				  const char *buf, size_t count)
159 {
160 	struct backing_dev_info *bdi = dev_get_drvdata(dev);
161 	unsigned long read_ahead_kb;
162 	ssize_t ret;
163 
164 	ret = kstrtoul(buf, 10, &read_ahead_kb);
165 	if (ret < 0)
166 		return ret;
167 
168 	bdi->ra_pages = read_ahead_kb >> (PAGE_SHIFT - 10);
169 
170 	return count;
171 }
172 
173 #define K(pages) ((pages) << (PAGE_SHIFT - 10))
174 
175 #define BDI_SHOW(name, expr)						\
176 static ssize_t name##_show(struct device *dev,				\
177 			   struct device_attribute *attr, char *page)	\
178 {									\
179 	struct backing_dev_info *bdi = dev_get_drvdata(dev);		\
180 									\
181 	return snprintf(page, PAGE_SIZE-1, "%lld\n", (long long)expr);	\
182 }
183 
184 BDI_SHOW(read_ahead_kb, K(bdi->ra_pages))
185 
186 static ssize_t min_ratio_store(struct device *dev,
187 		struct device_attribute *attr, const char *buf, size_t count)
188 {
189 	struct backing_dev_info *bdi = dev_get_drvdata(dev);
190 	unsigned int ratio;
191 	ssize_t ret;
192 
193 	ret = kstrtouint(buf, 10, &ratio);
194 	if (ret < 0)
195 		return ret;
196 
197 	ret = bdi_set_min_ratio(bdi, ratio);
198 	if (!ret)
199 		ret = count;
200 
201 	return ret;
202 }
203 BDI_SHOW(min_ratio, bdi->min_ratio)
204 
205 static ssize_t max_ratio_store(struct device *dev,
206 		struct device_attribute *attr, const char *buf, size_t count)
207 {
208 	struct backing_dev_info *bdi = dev_get_drvdata(dev);
209 	unsigned int ratio;
210 	ssize_t ret;
211 
212 	ret = kstrtouint(buf, 10, &ratio);
213 	if (ret < 0)
214 		return ret;
215 
216 	ret = bdi_set_max_ratio(bdi, ratio);
217 	if (!ret)
218 		ret = count;
219 
220 	return ret;
221 }
222 BDI_SHOW(max_ratio, bdi->max_ratio)
223 
224 static ssize_t stable_pages_required_show(struct device *dev,
225 					  struct device_attribute *attr,
226 					  char *page)
227 {
228 	struct backing_dev_info *bdi = dev_get_drvdata(dev);
229 
230 	return snprintf(page, PAGE_SIZE-1, "%d\n",
231 			bdi_cap_stable_pages_required(bdi) ? 1 : 0);
232 }
233 
234 #define __ATTR_RW(attr) __ATTR(attr, 0644, attr##_show, attr##_store)
235 
236 static struct device_attribute bdi_dev_attrs[] = {
237 	__ATTR_RW(read_ahead_kb),
238 	__ATTR_RW(min_ratio),
239 	__ATTR_RW(max_ratio),
240 	__ATTR_RO(stable_pages_required),
241 	__ATTR_NULL,
242 };
243 
244 static __init int bdi_class_init(void)
245 {
246 	bdi_class = class_create(THIS_MODULE, "bdi");
247 	if (IS_ERR(bdi_class))
248 		return PTR_ERR(bdi_class);
249 
250 	bdi_class->dev_attrs = bdi_dev_attrs;
251 	bdi_debug_init();
252 	return 0;
253 }
254 postcore_initcall(bdi_class_init);
255 
256 static int __init default_bdi_init(void)
257 {
258 	int err;
259 
260 	err = bdi_init(&default_backing_dev_info);
261 	if (!err)
262 		bdi_register(&default_backing_dev_info, NULL, "default");
263 	err = bdi_init(&noop_backing_dev_info);
264 
265 	return err;
266 }
267 subsys_initcall(default_bdi_init);
268 
269 int bdi_has_dirty_io(struct backing_dev_info *bdi)
270 {
271 	return wb_has_dirty_io(&bdi->wb);
272 }
273 
274 static void wakeup_timer_fn(unsigned long data)
275 {
276 	struct backing_dev_info *bdi = (struct backing_dev_info *)data;
277 
278 	spin_lock_bh(&bdi->wb_lock);
279 	if (bdi->wb.task) {
280 		trace_writeback_wake_thread(bdi);
281 		wake_up_process(bdi->wb.task);
282 	} else if (bdi->dev) {
283 		/*
284 		 * When bdi tasks are inactive for long time, they are killed.
285 		 * In this case we have to wake-up the forker thread which
286 		 * should create and run the bdi thread.
287 		 */
288 		trace_writeback_wake_forker_thread(bdi);
289 		wake_up_process(default_backing_dev_info.wb.task);
290 	}
291 	spin_unlock_bh(&bdi->wb_lock);
292 }
293 
294 /*
295  * This function is used when the first inode for this bdi is marked dirty. It
296  * wakes-up the corresponding bdi thread which should then take care of the
297  * periodic background write-out of dirty inodes. Since the write-out would
298  * starts only 'dirty_writeback_interval' centisecs from now anyway, we just
299  * set up a timer which wakes the bdi thread up later.
300  *
301  * Note, we wouldn't bother setting up the timer, but this function is on the
302  * fast-path (used by '__mark_inode_dirty()'), so we save few context switches
303  * by delaying the wake-up.
304  */
305 void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi)
306 {
307 	unsigned long timeout;
308 
309 	timeout = msecs_to_jiffies(dirty_writeback_interval * 10);
310 	mod_timer(&bdi->wb.wakeup_timer, jiffies + timeout);
311 }
312 
313 /*
314  * Calculate the longest interval (jiffies) bdi threads are allowed to be
315  * inactive.
316  */
317 static unsigned long bdi_longest_inactive(void)
318 {
319 	unsigned long interval;
320 
321 	interval = msecs_to_jiffies(dirty_writeback_interval * 10);
322 	return max(5UL * 60 * HZ, interval);
323 }
324 
325 /*
326  * Clear pending bit and wakeup anybody waiting for flusher thread creation or
327  * shutdown
328  */
329 static void bdi_clear_pending(struct backing_dev_info *bdi)
330 {
331 	clear_bit(BDI_pending, &bdi->state);
332 	smp_mb__after_clear_bit();
333 	wake_up_bit(&bdi->state, BDI_pending);
334 }
335 
336 static int bdi_forker_thread(void *ptr)
337 {
338 	struct bdi_writeback *me = ptr;
339 
340 	current->flags |= PF_SWAPWRITE;
341 	set_freezable();
342 
343 	/*
344 	 * Our parent may run at a different priority, just set us to normal
345 	 */
346 	set_user_nice(current, 0);
347 
348 	for (;;) {
349 		struct task_struct *task = NULL;
350 		struct backing_dev_info *bdi;
351 		enum {
352 			NO_ACTION,   /* Nothing to do */
353 			FORK_THREAD, /* Fork bdi thread */
354 			KILL_THREAD, /* Kill inactive bdi thread */
355 		} action = NO_ACTION;
356 
357 		/*
358 		 * Temporary measure, we want to make sure we don't see
359 		 * dirty data on the default backing_dev_info
360 		 */
361 		if (wb_has_dirty_io(me) || !list_empty(&me->bdi->work_list)) {
362 			del_timer(&me->wakeup_timer);
363 			wb_do_writeback(me, 0);
364 		}
365 
366 		spin_lock_bh(&bdi_lock);
367 		/*
368 		 * In the following loop we are going to check whether we have
369 		 * some work to do without any synchronization with tasks
370 		 * waking us up to do work for them. Set the task state here
371 		 * so that we don't miss wakeups after verifying conditions.
372 		 */
373 		set_current_state(TASK_INTERRUPTIBLE);
374 
375 		list_for_each_entry(bdi, &bdi_list, bdi_list) {
376 			bool have_dirty_io;
377 
378 			if (!bdi_cap_writeback_dirty(bdi) ||
379 			     bdi_cap_flush_forker(bdi))
380 				continue;
381 
382 			WARN(!test_bit(BDI_registered, &bdi->state),
383 			     "bdi %p/%s is not registered!\n", bdi, bdi->name);
384 
385 			have_dirty_io = !list_empty(&bdi->work_list) ||
386 					wb_has_dirty_io(&bdi->wb);
387 
388 			/*
389 			 * If the bdi has work to do, but the thread does not
390 			 * exist - create it.
391 			 */
392 			if (!bdi->wb.task && have_dirty_io) {
393 				/*
394 				 * Set the pending bit - if someone will try to
395 				 * unregister this bdi - it'll wait on this bit.
396 				 */
397 				set_bit(BDI_pending, &bdi->state);
398 				action = FORK_THREAD;
399 				break;
400 			}
401 
402 			spin_lock(&bdi->wb_lock);
403 
404 			/*
405 			 * If there is no work to do and the bdi thread was
406 			 * inactive long enough - kill it. The wb_lock is taken
407 			 * to make sure no-one adds more work to this bdi and
408 			 * wakes the bdi thread up.
409 			 */
410 			if (bdi->wb.task && !have_dirty_io &&
411 			    time_after(jiffies, bdi->wb.last_active +
412 						bdi_longest_inactive())) {
413 				task = bdi->wb.task;
414 				bdi->wb.task = NULL;
415 				spin_unlock(&bdi->wb_lock);
416 				set_bit(BDI_pending, &bdi->state);
417 				action = KILL_THREAD;
418 				break;
419 			}
420 			spin_unlock(&bdi->wb_lock);
421 		}
422 		spin_unlock_bh(&bdi_lock);
423 
424 		/* Keep working if default bdi still has things to do */
425 		if (!list_empty(&me->bdi->work_list))
426 			__set_current_state(TASK_RUNNING);
427 
428 		switch (action) {
429 		case FORK_THREAD:
430 			__set_current_state(TASK_RUNNING);
431 			task = kthread_create(bdi_writeback_thread, &bdi->wb,
432 					      "flush-%s", dev_name(bdi->dev));
433 			if (IS_ERR(task)) {
434 				/*
435 				 * If thread creation fails, force writeout of
436 				 * the bdi from the thread. Hopefully 1024 is
437 				 * large enough for efficient IO.
438 				 */
439 				writeback_inodes_wb(&bdi->wb, 1024,
440 						    WB_REASON_FORKER_THREAD);
441 			} else {
442 				/*
443 				 * The spinlock makes sure we do not lose
444 				 * wake-ups when racing with 'bdi_queue_work()'.
445 				 * And as soon as the bdi thread is visible, we
446 				 * can start it.
447 				 */
448 				spin_lock_bh(&bdi->wb_lock);
449 				bdi->wb.task = task;
450 				spin_unlock_bh(&bdi->wb_lock);
451 				wake_up_process(task);
452 			}
453 			bdi_clear_pending(bdi);
454 			break;
455 
456 		case KILL_THREAD:
457 			__set_current_state(TASK_RUNNING);
458 			kthread_stop(task);
459 			bdi_clear_pending(bdi);
460 			break;
461 
462 		case NO_ACTION:
463 			if (!wb_has_dirty_io(me) || !dirty_writeback_interval)
464 				/*
465 				 * There are no dirty data. The only thing we
466 				 * should now care about is checking for
467 				 * inactive bdi threads and killing them. Thus,
468 				 * let's sleep for longer time, save energy and
469 				 * be friendly for battery-driven devices.
470 				 */
471 				schedule_timeout(bdi_longest_inactive());
472 			else
473 				schedule_timeout(msecs_to_jiffies(dirty_writeback_interval * 10));
474 			try_to_freeze();
475 			break;
476 		}
477 	}
478 
479 	return 0;
480 }
481 
482 /*
483  * Remove bdi from bdi_list, and ensure that it is no longer visible
484  */
485 static void bdi_remove_from_list(struct backing_dev_info *bdi)
486 {
487 	spin_lock_bh(&bdi_lock);
488 	list_del_rcu(&bdi->bdi_list);
489 	spin_unlock_bh(&bdi_lock);
490 
491 	synchronize_rcu_expedited();
492 }
493 
494 int bdi_register(struct backing_dev_info *bdi, struct device *parent,
495 		const char *fmt, ...)
496 {
497 	va_list args;
498 	struct device *dev;
499 
500 	if (bdi->dev)	/* The driver needs to use separate queues per device */
501 		return 0;
502 
503 	va_start(args, fmt);
504 	dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args);
505 	va_end(args);
506 	if (IS_ERR(dev))
507 		return PTR_ERR(dev);
508 
509 	bdi->dev = dev;
510 
511 	/*
512 	 * Just start the forker thread for our default backing_dev_info,
513 	 * and add other bdi's to the list. They will get a thread created
514 	 * on-demand when they need it.
515 	 */
516 	if (bdi_cap_flush_forker(bdi)) {
517 		struct bdi_writeback *wb = &bdi->wb;
518 
519 		wb->task = kthread_run(bdi_forker_thread, wb, "bdi-%s",
520 						dev_name(dev));
521 		if (IS_ERR(wb->task))
522 			return PTR_ERR(wb->task);
523 	}
524 
525 	bdi_debug_register(bdi, dev_name(dev));
526 	set_bit(BDI_registered, &bdi->state);
527 
528 	spin_lock_bh(&bdi_lock);
529 	list_add_tail_rcu(&bdi->bdi_list, &bdi_list);
530 	spin_unlock_bh(&bdi_lock);
531 
532 	trace_writeback_bdi_register(bdi);
533 	return 0;
534 }
535 EXPORT_SYMBOL(bdi_register);
536 
537 int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev)
538 {
539 	return bdi_register(bdi, NULL, "%u:%u", MAJOR(dev), MINOR(dev));
540 }
541 EXPORT_SYMBOL(bdi_register_dev);
542 
543 /*
544  * Remove bdi from the global list and shutdown any threads we have running
545  */
546 static void bdi_wb_shutdown(struct backing_dev_info *bdi)
547 {
548 	struct task_struct *task;
549 
550 	if (!bdi_cap_writeback_dirty(bdi))
551 		return;
552 
553 	/*
554 	 * Make sure nobody finds us on the bdi_list anymore
555 	 */
556 	bdi_remove_from_list(bdi);
557 
558 	/*
559 	 * If setup is pending, wait for that to complete first
560 	 */
561 	wait_on_bit(&bdi->state, BDI_pending, bdi_sched_wait,
562 			TASK_UNINTERRUPTIBLE);
563 
564 	/*
565 	 * Finally, kill the kernel thread. We don't need to be RCU
566 	 * safe anymore, since the bdi is gone from visibility.
567 	 */
568 	spin_lock_bh(&bdi->wb_lock);
569 	task = bdi->wb.task;
570 	bdi->wb.task = NULL;
571 	spin_unlock_bh(&bdi->wb_lock);
572 
573 	if (task)
574 		kthread_stop(task);
575 }
576 
577 /*
578  * This bdi is going away now, make sure that no super_blocks point to it
579  */
580 static void bdi_prune_sb(struct backing_dev_info *bdi)
581 {
582 	struct super_block *sb;
583 
584 	spin_lock(&sb_lock);
585 	list_for_each_entry(sb, &super_blocks, s_list) {
586 		if (sb->s_bdi == bdi)
587 			sb->s_bdi = &default_backing_dev_info;
588 	}
589 	spin_unlock(&sb_lock);
590 }
591 
592 void bdi_unregister(struct backing_dev_info *bdi)
593 {
594 	struct device *dev = bdi->dev;
595 
596 	if (dev) {
597 		bdi_set_min_ratio(bdi, 0);
598 		trace_writeback_bdi_unregister(bdi);
599 		bdi_prune_sb(bdi);
600 		del_timer_sync(&bdi->wb.wakeup_timer);
601 
602 		if (!bdi_cap_flush_forker(bdi))
603 			bdi_wb_shutdown(bdi);
604 		bdi_debug_unregister(bdi);
605 
606 		spin_lock_bh(&bdi->wb_lock);
607 		bdi->dev = NULL;
608 		spin_unlock_bh(&bdi->wb_lock);
609 
610 		device_unregister(dev);
611 	}
612 }
613 EXPORT_SYMBOL(bdi_unregister);
614 
615 static void bdi_wb_init(struct bdi_writeback *wb, struct backing_dev_info *bdi)
616 {
617 	memset(wb, 0, sizeof(*wb));
618 
619 	wb->bdi = bdi;
620 	wb->last_old_flush = jiffies;
621 	INIT_LIST_HEAD(&wb->b_dirty);
622 	INIT_LIST_HEAD(&wb->b_io);
623 	INIT_LIST_HEAD(&wb->b_more_io);
624 	spin_lock_init(&wb->list_lock);
625 	setup_timer(&wb->wakeup_timer, wakeup_timer_fn, (unsigned long)bdi);
626 }
627 
628 /*
629  * Initial write bandwidth: 100 MB/s
630  */
631 #define INIT_BW		(100 << (20 - PAGE_SHIFT))
632 
633 int bdi_init(struct backing_dev_info *bdi)
634 {
635 	int i, err;
636 
637 	bdi->dev = NULL;
638 
639 	bdi->min_ratio = 0;
640 	bdi->max_ratio = 100;
641 	bdi->max_prop_frac = FPROP_FRAC_BASE;
642 	spin_lock_init(&bdi->wb_lock);
643 	INIT_LIST_HEAD(&bdi->bdi_list);
644 	INIT_LIST_HEAD(&bdi->work_list);
645 
646 	bdi_wb_init(&bdi->wb, bdi);
647 
648 	for (i = 0; i < NR_BDI_STAT_ITEMS; i++) {
649 		err = percpu_counter_init(&bdi->bdi_stat[i], 0);
650 		if (err)
651 			goto err;
652 	}
653 
654 	bdi->dirty_exceeded = 0;
655 
656 	bdi->bw_time_stamp = jiffies;
657 	bdi->written_stamp = 0;
658 
659 	bdi->balanced_dirty_ratelimit = INIT_BW;
660 	bdi->dirty_ratelimit = INIT_BW;
661 	bdi->write_bandwidth = INIT_BW;
662 	bdi->avg_write_bandwidth = INIT_BW;
663 
664 	err = fprop_local_init_percpu(&bdi->completions);
665 
666 	if (err) {
667 err:
668 		while (i--)
669 			percpu_counter_destroy(&bdi->bdi_stat[i]);
670 	}
671 
672 	return err;
673 }
674 EXPORT_SYMBOL(bdi_init);
675 
676 void bdi_destroy(struct backing_dev_info *bdi)
677 {
678 	int i;
679 
680 	/*
681 	 * Splice our entries to the default_backing_dev_info, if this
682 	 * bdi disappears
683 	 */
684 	if (bdi_has_dirty_io(bdi)) {
685 		struct bdi_writeback *dst = &default_backing_dev_info.wb;
686 
687 		bdi_lock_two(&bdi->wb, dst);
688 		list_splice(&bdi->wb.b_dirty, &dst->b_dirty);
689 		list_splice(&bdi->wb.b_io, &dst->b_io);
690 		list_splice(&bdi->wb.b_more_io, &dst->b_more_io);
691 		spin_unlock(&bdi->wb.list_lock);
692 		spin_unlock(&dst->list_lock);
693 	}
694 
695 	bdi_unregister(bdi);
696 
697 	/*
698 	 * If bdi_unregister() had already been called earlier, the
699 	 * wakeup_timer could still be armed because bdi_prune_sb()
700 	 * can race with the bdi_wakeup_thread_delayed() calls from
701 	 * __mark_inode_dirty().
702 	 */
703 	del_timer_sync(&bdi->wb.wakeup_timer);
704 
705 	for (i = 0; i < NR_BDI_STAT_ITEMS; i++)
706 		percpu_counter_destroy(&bdi->bdi_stat[i]);
707 
708 	fprop_local_destroy_percpu(&bdi->completions);
709 }
710 EXPORT_SYMBOL(bdi_destroy);
711 
712 /*
713  * For use from filesystems to quickly init and register a bdi associated
714  * with dirty writeback
715  */
716 int bdi_setup_and_register(struct backing_dev_info *bdi, char *name,
717 			   unsigned int cap)
718 {
719 	char tmp[32];
720 	int err;
721 
722 	bdi->name = name;
723 	bdi->capabilities = cap;
724 	err = bdi_init(bdi);
725 	if (err)
726 		return err;
727 
728 	sprintf(tmp, "%.28s%s", name, "-%d");
729 	err = bdi_register(bdi, NULL, tmp, atomic_long_inc_return(&bdi_seq));
730 	if (err) {
731 		bdi_destroy(bdi);
732 		return err;
733 	}
734 
735 	return 0;
736 }
737 EXPORT_SYMBOL(bdi_setup_and_register);
738 
739 static wait_queue_head_t congestion_wqh[2] = {
740 		__WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[0]),
741 		__WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[1])
742 	};
743 static atomic_t nr_bdi_congested[2];
744 
745 void clear_bdi_congested(struct backing_dev_info *bdi, int sync)
746 {
747 	enum bdi_state bit;
748 	wait_queue_head_t *wqh = &congestion_wqh[sync];
749 
750 	bit = sync ? BDI_sync_congested : BDI_async_congested;
751 	if (test_and_clear_bit(bit, &bdi->state))
752 		atomic_dec(&nr_bdi_congested[sync]);
753 	smp_mb__after_clear_bit();
754 	if (waitqueue_active(wqh))
755 		wake_up(wqh);
756 }
757 EXPORT_SYMBOL(clear_bdi_congested);
758 
759 void set_bdi_congested(struct backing_dev_info *bdi, int sync)
760 {
761 	enum bdi_state bit;
762 
763 	bit = sync ? BDI_sync_congested : BDI_async_congested;
764 	if (!test_and_set_bit(bit, &bdi->state))
765 		atomic_inc(&nr_bdi_congested[sync]);
766 }
767 EXPORT_SYMBOL(set_bdi_congested);
768 
769 /**
770  * congestion_wait - wait for a backing_dev to become uncongested
771  * @sync: SYNC or ASYNC IO
772  * @timeout: timeout in jiffies
773  *
774  * Waits for up to @timeout jiffies for a backing_dev (any backing_dev) to exit
775  * write congestion.  If no backing_devs are congested then just wait for the
776  * next write to be completed.
777  */
778 long congestion_wait(int sync, long timeout)
779 {
780 	long ret;
781 	unsigned long start = jiffies;
782 	DEFINE_WAIT(wait);
783 	wait_queue_head_t *wqh = &congestion_wqh[sync];
784 
785 	prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
786 	ret = io_schedule_timeout(timeout);
787 	finish_wait(wqh, &wait);
788 
789 	trace_writeback_congestion_wait(jiffies_to_usecs(timeout),
790 					jiffies_to_usecs(jiffies - start));
791 
792 	return ret;
793 }
794 EXPORT_SYMBOL(congestion_wait);
795 
796 /**
797  * wait_iff_congested - Conditionally wait for a backing_dev to become uncongested or a zone to complete writes
798  * @zone: A zone to check if it is heavily congested
799  * @sync: SYNC or ASYNC IO
800  * @timeout: timeout in jiffies
801  *
802  * In the event of a congested backing_dev (any backing_dev) and the given
803  * @zone has experienced recent congestion, this waits for up to @timeout
804  * jiffies for either a BDI to exit congestion of the given @sync queue
805  * or a write to complete.
806  *
807  * In the absence of zone congestion, cond_resched() is called to yield
808  * the processor if necessary but otherwise does not sleep.
809  *
810  * The return value is 0 if the sleep is for the full timeout. Otherwise,
811  * it is the number of jiffies that were still remaining when the function
812  * returned. return_value == timeout implies the function did not sleep.
813  */
814 long wait_iff_congested(struct zone *zone, int sync, long timeout)
815 {
816 	long ret;
817 	unsigned long start = jiffies;
818 	DEFINE_WAIT(wait);
819 	wait_queue_head_t *wqh = &congestion_wqh[sync];
820 
821 	/*
822 	 * If there is no congestion, or heavy congestion is not being
823 	 * encountered in the current zone, yield if necessary instead
824 	 * of sleeping on the congestion queue
825 	 */
826 	if (atomic_read(&nr_bdi_congested[sync]) == 0 ||
827 			!zone_is_reclaim_congested(zone)) {
828 		cond_resched();
829 
830 		/* In case we scheduled, work out time remaining */
831 		ret = timeout - (jiffies - start);
832 		if (ret < 0)
833 			ret = 0;
834 
835 		goto out;
836 	}
837 
838 	/* Sleep until uncongested or a write happens */
839 	prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
840 	ret = io_schedule_timeout(timeout);
841 	finish_wait(wqh, &wait);
842 
843 out:
844 	trace_writeback_wait_iff_congested(jiffies_to_usecs(timeout),
845 					jiffies_to_usecs(jiffies - start));
846 
847 	return ret;
848 }
849 EXPORT_SYMBOL(wait_iff_congested);
850 
851 int pdflush_proc_obsolete(struct ctl_table *table, int write,
852 			void __user *buffer, size_t *lenp, loff_t *ppos)
853 {
854 	char kbuf[] = "0\n";
855 
856 	if (*ppos) {
857 		*lenp = 0;
858 		return 0;
859 	}
860 
861 	if (copy_to_user(buffer, kbuf, sizeof(kbuf)))
862 		return -EFAULT;
863 	printk_once(KERN_WARNING "%s exported in /proc is scheduled for removal\n",
864 			table->procname);
865 
866 	*lenp = 2;
867 	*ppos += *lenp;
868 	return 2;
869 }
870