Lines Matching refs:bdi

75 int writeback_in_progress(struct backing_dev_info *bdi)  in writeback_in_progress()  argument
77 return test_bit(BDI_writeback_running, &bdi->state); in writeback_in_progress()
112 static void bdi_wakeup_thread(struct backing_dev_info *bdi) in bdi_wakeup_thread() argument
114 spin_lock_bh(&bdi->wb_lock); in bdi_wakeup_thread()
115 if (test_bit(BDI_registered, &bdi->state)) in bdi_wakeup_thread()
116 mod_delayed_work(bdi_wq, &bdi->wb.dwork, 0); in bdi_wakeup_thread()
117 spin_unlock_bh(&bdi->wb_lock); in bdi_wakeup_thread()
120 static void bdi_queue_work(struct backing_dev_info *bdi, in bdi_queue_work() argument
123 trace_writeback_queue(bdi, work); in bdi_queue_work()
125 spin_lock_bh(&bdi->wb_lock); in bdi_queue_work()
126 if (!test_bit(BDI_registered, &bdi->state)) { in bdi_queue_work()
131 list_add_tail(&work->list, &bdi->work_list); in bdi_queue_work()
132 mod_delayed_work(bdi_wq, &bdi->wb.dwork, 0); in bdi_queue_work()
134 spin_unlock_bh(&bdi->wb_lock); in bdi_queue_work()
138 __bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, in __bdi_start_writeback() argument
149 trace_writeback_nowork(bdi); in __bdi_start_writeback()
150 bdi_wakeup_thread(bdi); in __bdi_start_writeback()
159 bdi_queue_work(bdi, work); in __bdi_start_writeback()
174 void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, in bdi_start_writeback() argument
177 __bdi_start_writeback(bdi, nr_pages, true, reason); in bdi_start_writeback()
190 void bdi_start_background_writeback(struct backing_dev_info *bdi) in bdi_start_background_writeback() argument
196 trace_writeback_wake_background(bdi); in bdi_start_background_writeback()
197 bdi_wakeup_thread(bdi); in bdi_start_background_writeback()
205 struct backing_dev_info *bdi = inode_to_bdi(inode); in inode_wb_list_del() local
207 spin_lock(&bdi->wb.list_lock); in inode_wb_list_del()
209 spin_unlock(&bdi->wb.list_lock); in inode_wb_list_del()
627 static long writeback_chunk_size(struct backing_dev_info *bdi, in writeback_chunk_size() argument
648 pages = min(bdi->avg_write_bandwidth / 2, in writeback_chunk_size()
746 write_chunk = writeback_chunk_size(wb->bdi, work); in writeback_sb_inodes()
833 static bool over_bground_thresh(struct backing_dev_info *bdi) in over_bground_thresh() argument
843 if (bdi_stat(bdi, BDI_RECLAIMABLE) > in over_bground_thresh()
844 bdi_dirty_limit(bdi, background_thresh)) in over_bground_thresh()
857 __bdi_update_bandwidth(wb->bdi, 0, 0, 0, 0, 0, start_time); in wb_update_bandwidth()
902 !list_empty(&wb->bdi->work_list)) in wb_writeback()
909 if (work->for_background && !over_bground_thresh(wb->bdi)) in wb_writeback()
924 trace_writeback_start(wb->bdi, work); in wb_writeback()
931 trace_writeback_written(wb->bdi, work); in wb_writeback()
956 trace_writeback_wait(wb->bdi, work); in wb_writeback()
974 get_next_work_item(struct backing_dev_info *bdi) in get_next_work_item() argument
978 spin_lock_bh(&bdi->wb_lock); in get_next_work_item()
979 if (!list_empty(&bdi->work_list)) { in get_next_work_item()
980 work = list_entry(bdi->work_list.next, in get_next_work_item()
984 spin_unlock_bh(&bdi->wb_lock); in get_next_work_item()
1001 if (over_bground_thresh(wb->bdi)) { in wb_check_background_flush()
1056 struct backing_dev_info *bdi = wb->bdi; in wb_do_writeback() local
1060 set_bit(BDI_writeback_running, &wb->bdi->state); in wb_do_writeback()
1061 while ((work = get_next_work_item(bdi)) != NULL) { in wb_do_writeback()
1063 trace_writeback_exec(bdi, work); in wb_do_writeback()
1082 clear_bit(BDI_writeback_running, &wb->bdi->state); in wb_do_writeback()
1095 struct backing_dev_info *bdi = wb->bdi; in bdi_writeback_workfn() local
1098 set_worker_desc("flush-%s", dev_name(bdi->dev)); in bdi_writeback_workfn()
1102 !test_bit(BDI_registered, &bdi->state))) { in bdi_writeback_workfn()
1112 } while (!list_empty(&bdi->work_list)); in bdi_writeback_workfn()
1119 pages_written = writeback_inodes_wb(&bdi->wb, 1024, in bdi_writeback_workfn()
1124 if (!list_empty(&bdi->work_list)) in bdi_writeback_workfn()
1127 bdi_wakeup_thread_delayed(bdi); in bdi_writeback_workfn()
1138 struct backing_dev_info *bdi; in wakeup_flusher_threads() local
1144 list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) { in wakeup_flusher_threads()
1145 if (!bdi_has_dirty_io(bdi)) in wakeup_flusher_threads()
1147 __bdi_start_writeback(bdi, nr_pages, false, reason); in wakeup_flusher_threads()
1172 struct backing_dev_info *bdi; in wakeup_dirtytime_writeback() local
1175 list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) { in wakeup_dirtytime_writeback()
1176 if (list_empty(&bdi->wb.b_dirty_time)) in wakeup_dirtytime_writeback()
1178 bdi_wakeup_thread(bdi); in wakeup_dirtytime_writeback()
1252 struct backing_dev_info *bdi = NULL; in __mark_inode_dirty() local
1321 bdi = inode_to_bdi(inode); in __mark_inode_dirty()
1324 spin_lock(&bdi->wb.list_lock); in __mark_inode_dirty()
1325 if (bdi_cap_writeback_dirty(bdi)) { in __mark_inode_dirty()
1326 WARN(!test_bit(BDI_registered, &bdi->state), in __mark_inode_dirty()
1327 "bdi-%s not registered\n", bdi->name); in __mark_inode_dirty()
1335 if (!wb_has_dirty_io(&bdi->wb)) in __mark_inode_dirty()
1343 list_move(&inode->i_wb_list, &bdi->wb.b_dirty); in __mark_inode_dirty()
1346 &bdi->wb.b_dirty_time); in __mark_inode_dirty()
1347 spin_unlock(&bdi->wb.list_lock); in __mark_inode_dirty()
1351 bdi_wakeup_thread_delayed(bdi); in __mark_inode_dirty()