Lines Matching refs:work
177 struct wb_writeback_work *work) in wb_queue_work() argument
179 trace_writeback_queue(wb, work); in wb_queue_work()
184 if (work->done) in wb_queue_work()
185 atomic_inc(&work->done->cnt); in wb_queue_work()
186 list_add_tail(&work->list, &wb->work_list); in wb_queue_work()
317 struct work_struct work; member
320 static void inode_switch_wbs_work_fn(struct work_struct *work) in inode_switch_wbs_work_fn() argument
323 container_of(work, struct inode_switch_wbs_context, work); in inode_switch_wbs_work_fn()
442 INIT_WORK(&isw->work, inode_switch_wbs_work_fn); in inode_switch_wbs_rcu_fn()
443 queue_work(isw_wq, &isw->work); in inode_switch_wbs_rcu_fn()
801 struct wb_writeback_work *work; in bdi_split_work_to_wbs() local
819 work = kmalloc(sizeof(*work), GFP_ATOMIC); in bdi_split_work_to_wbs()
820 if (work) { in bdi_split_work_to_wbs()
821 *work = *base_work; in bdi_split_work_to_wbs()
822 work->nr_pages = nr_pages; in bdi_split_work_to_wbs()
823 work->auto_free = 1; in bdi_split_work_to_wbs()
824 wb_queue_work(wb, work); in bdi_split_work_to_wbs()
829 work = &fallback_work; in bdi_split_work_to_wbs()
830 *work = *base_work; in bdi_split_work_to_wbs()
831 work->nr_pages = nr_pages; in bdi_split_work_to_wbs()
832 work->auto_free = 0; in bdi_split_work_to_wbs()
833 work->done = &fallback_work_done; in bdi_split_work_to_wbs()
835 wb_queue_work(wb, work); in bdi_split_work_to_wbs()
927 struct wb_writeback_work *work; in wb_start_writeback() local
936 work = kzalloc(sizeof(*work), GFP_ATOMIC); in wb_start_writeback()
937 if (!work) { in wb_start_writeback()
943 work->sync_mode = WB_SYNC_NONE; in wb_start_writeback()
944 work->nr_pages = nr_pages; in wb_start_writeback()
945 work->range_cyclic = range_cyclic; in wb_start_writeback()
946 work->reason = reason; in wb_start_writeback()
947 work->auto_free = 1; in wb_start_writeback()
949 wb_queue_work(wb, work); in wb_start_writeback()
1047 struct wb_writeback_work *work) in move_expired_inodes() argument
1059 older_than_this = work->older_than_this; in move_expired_inodes()
1060 else if (!work->for_sync) { in move_expired_inodes()
1110 static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work) in queue_io() argument
1116 moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, 0, work); in queue_io()
1118 EXPIRE_DIRTY_ATIME, work); in queue_io()
1121 trace_writeback_queue_io(wb, work, moved); in queue_io()
1402 struct wb_writeback_work *work) in writeback_chunk_size() argument
1419 if (work->sync_mode == WB_SYNC_ALL || work->tagged_writepages) in writeback_chunk_size()
1424 pages = min(pages, work->nr_pages); in writeback_chunk_size()
1443 struct wb_writeback_work *work) in writeback_sb_inodes() argument
1446 .sync_mode = work->sync_mode, in writeback_sb_inodes()
1447 .tagged_writepages = work->tagged_writepages, in writeback_sb_inodes()
1448 .for_kupdate = work->for_kupdate, in writeback_sb_inodes()
1449 .for_background = work->for_background, in writeback_sb_inodes()
1450 .for_sync = work->for_sync, in writeback_sb_inodes()
1451 .range_cyclic = work->range_cyclic, in writeback_sb_inodes()
1464 if (work->sb) { in writeback_sb_inodes()
1525 write_chunk = writeback_chunk_size(wb, work); in writeback_sb_inodes()
1536 work->nr_pages -= write_chunk - wbc.nr_to_write; in writeback_sb_inodes()
1576 if (work->nr_pages <= 0) in writeback_sb_inodes()
1584 struct wb_writeback_work *work) in __writeback_inodes_wb() argument
1602 wrote += writeback_sb_inodes(sb, wb, work); in __writeback_inodes_wb()
1609 if (work->nr_pages <= 0) in __writeback_inodes_wb()
1620 struct wb_writeback_work work = { in writeback_inodes_wb() local
1631 queue_io(wb, &work); in writeback_inodes_wb()
1632 __writeback_inodes_wb(wb, &work); in writeback_inodes_wb()
1636 return nr_pages - work.nr_pages; in writeback_inodes_wb()
1655 struct wb_writeback_work *work) in wb_writeback() argument
1658 long nr_pages = work->nr_pages; in wb_writeback()
1665 work->older_than_this = &oldest_jif; in wb_writeback()
1673 if (work->nr_pages <= 0) in wb_writeback()
1682 if ((work->for_background || work->for_kupdate) && in wb_writeback()
1690 if (work->for_background && !wb_over_bg_thresh(wb)) in wb_writeback()
1699 if (work->for_kupdate) { in wb_writeback()
1702 } else if (work->for_background) in wb_writeback()
1705 trace_writeback_start(wb, work); in wb_writeback()
1707 queue_io(wb, work); in wb_writeback()
1708 if (work->sb) in wb_writeback()
1709 progress = writeback_sb_inodes(work->sb, wb, work); in wb_writeback()
1711 progress = __writeback_inodes_wb(wb, work); in wb_writeback()
1712 trace_writeback_written(wb, work); in wb_writeback()
1737 trace_writeback_wait(wb, work); in wb_writeback()
1749 return nr_pages - work->nr_pages; in wb_writeback()
1757 struct wb_writeback_work *work = NULL; in get_next_work_item() local
1761 work = list_entry(wb->work_list.next, in get_next_work_item()
1763 list_del_init(&work->list); in get_next_work_item()
1766 return work; in get_next_work_item()
1784 struct wb_writeback_work work = { in wb_check_background_flush() local
1792 return wb_writeback(wb, &work); in wb_check_background_flush()
1818 struct wb_writeback_work work = { in wb_check_old_data_flush() local
1826 return wb_writeback(wb, &work); in wb_check_old_data_flush()
1837 struct wb_writeback_work *work; in wb_do_writeback() local
1841 while ((work = get_next_work_item(wb)) != NULL) { in wb_do_writeback()
1842 struct wb_completion *done = work->done; in wb_do_writeback()
1844 trace_writeback_exec(wb, work); in wb_do_writeback()
1846 wrote += wb_writeback(wb, work); in wb_do_writeback()
1848 if (work->auto_free) in wb_do_writeback()
1849 kfree(work); in wb_do_writeback()
1868 void wb_workfn(struct work_struct *work) in wb_workfn() argument
1870 struct bdi_writeback *wb = container_of(to_delayed_work(work), in wb_workfn()
2220 struct wb_writeback_work work = { in __writeback_inodes_sb_nr() local
2234 bdi_split_work_to_wbs(sb->s_bdi, &work, skip_if_busy); in __writeback_inodes_sb_nr()
2316 struct wb_writeback_work work = { in sync_inodes_sb() local
2336 bdi_split_work_to_wbs(bdi, &work, false); in sync_inodes_sb()