Lines Matching refs:inode
70 static inline struct inode *wb_inode(struct list_head *head) in wb_inode()
72 return list_entry(head, struct inode, i_io_list); in wb_inode()
118 static bool inode_io_list_move_locked(struct inode *inode, in inode_io_list_move_locked() argument
124 list_move(&inode->i_io_list, head); in inode_io_list_move_locked()
142 static void inode_io_list_del_locked(struct inode *inode, in inode_io_list_del_locked() argument
146 assert_spin_locked(&inode->i_lock); in inode_io_list_del_locked()
148 inode->i_state &= ~I_SYNC_QUEUED; in inode_io_list_del_locked()
149 list_del_init(&inode->i_io_list); in inode_io_list_del_locked()
250 void __inode_attach_wb(struct inode *inode, struct page *page) in __inode_attach_wb() argument
252 struct backing_dev_info *bdi = inode_to_bdi(inode); in __inode_attach_wb()
255 if (inode_cgwb_enabled(inode)) { in __inode_attach_wb()
276 if (unlikely(cmpxchg(&inode->i_wb, NULL, wb))) in __inode_attach_wb()
290 locked_inode_to_wb_and_lock_list(struct inode *inode) in locked_inode_to_wb_and_lock_list() argument
291 __releases(&inode->i_lock) in locked_inode_to_wb_and_lock_list()
295 struct bdi_writeback *wb = inode_to_wb(inode); in locked_inode_to_wb_and_lock_list()
304 spin_unlock(&inode->i_lock); in locked_inode_to_wb_and_lock_list()
308 if (likely(wb == inode->i_wb)) { in locked_inode_to_wb_and_lock_list()
316 spin_lock(&inode->i_lock); in locked_inode_to_wb_and_lock_list()
327 static struct bdi_writeback *inode_to_wb_and_lock_list(struct inode *inode) in inode_to_wb_and_lock_list() argument
330 spin_lock(&inode->i_lock); in inode_to_wb_and_lock_list()
331 return locked_inode_to_wb_and_lock_list(inode); in inode_to_wb_and_lock_list()
335 struct inode *inode; member
356 struct inode *inode = isw->inode; in inode_switch_wbs_work_fn() local
357 struct backing_dev_info *bdi = inode_to_bdi(inode); in inode_switch_wbs_work_fn()
358 struct address_space *mapping = inode->i_mapping; in inode_switch_wbs_work_fn()
359 struct bdi_writeback *old_wb = inode->i_wb; in inode_switch_wbs_work_fn()
388 spin_lock(&inode->i_lock); in inode_switch_wbs_work_fn()
395 if (unlikely(inode->i_state & I_FREEING)) in inode_switch_wbs_work_fn()
398 trace_inode_switch_wbs(inode, old_wb, new_wb); in inode_switch_wbs_work_fn()
427 if (!list_empty(&inode->i_io_list)) { in inode_switch_wbs_work_fn()
428 struct inode *pos; in inode_switch_wbs_work_fn()
430 inode_io_list_del_locked(inode, old_wb); in inode_switch_wbs_work_fn()
431 inode->i_wb = new_wb; in inode_switch_wbs_work_fn()
433 if (time_after_eq(inode->dirtied_when, in inode_switch_wbs_work_fn()
436 inode_io_list_move_locked(inode, new_wb, pos->i_io_list.prev); in inode_switch_wbs_work_fn()
438 inode->i_wb = new_wb; in inode_switch_wbs_work_fn()
442 inode->i_wb_frn_winner = 0; in inode_switch_wbs_work_fn()
443 inode->i_wb_frn_avg_time = 0; in inode_switch_wbs_work_fn()
444 inode->i_wb_frn_history = 0; in inode_switch_wbs_work_fn()
451 smp_store_release(&inode->i_state, inode->i_state & ~I_WB_SWITCH); in inode_switch_wbs_work_fn()
454 spin_unlock(&inode->i_lock); in inode_switch_wbs_work_fn()
466 iput(inode); in inode_switch_wbs_work_fn()
490 static void inode_switch_wbs(struct inode *inode, int new_wb_id) in inode_switch_wbs() argument
492 struct backing_dev_info *bdi = inode_to_bdi(inode); in inode_switch_wbs()
497 if (inode->i_state & I_WB_SWITCH) in inode_switch_wbs()
525 spin_lock(&inode->i_lock); in inode_switch_wbs()
526 if (!(inode->i_sb->s_flags & SB_ACTIVE) || in inode_switch_wbs()
527 inode->i_state & (I_WB_SWITCH | I_FREEING) || in inode_switch_wbs()
528 inode_to_wb(inode) == isw->new_wb) { in inode_switch_wbs()
529 spin_unlock(&inode->i_lock); in inode_switch_wbs()
532 inode->i_state |= I_WB_SWITCH; in inode_switch_wbs()
533 __iget(inode); in inode_switch_wbs()
534 spin_unlock(&inode->i_lock); in inode_switch_wbs()
536 isw->inode = inode; in inode_switch_wbs()
565 struct inode *inode) in wbc_attach_and_unlock_inode() argument
567 if (!inode_cgwb_enabled(inode)) { in wbc_attach_and_unlock_inode()
568 spin_unlock(&inode->i_lock); in wbc_attach_and_unlock_inode()
572 wbc->wb = inode_to_wb(inode); in wbc_attach_and_unlock_inode()
573 wbc->inode = inode; in wbc_attach_and_unlock_inode()
576 wbc->wb_lcand_id = inode->i_wb_frn_winner; in wbc_attach_and_unlock_inode()
583 spin_unlock(&inode->i_lock); in wbc_attach_and_unlock_inode()
593 inode_switch_wbs(inode, wbc->wb_id); in wbc_attach_and_unlock_inode()
637 struct inode *inode = wbc->inode; in wbc_detach_inode() local
645 history = inode->i_wb_frn_history; in wbc_detach_inode()
646 avg_time = inode->i_wb_frn_avg_time; in wbc_detach_inode()
694 trace_inode_foreign_history(inode, wbc, history); in wbc_detach_inode()
704 inode_switch_wbs(inode, max_id); in wbc_detach_inode()
711 inode->i_wb_frn_winner = max_id; in wbc_detach_inode()
712 inode->i_wb_frn_avg_time = min(avg_time, (unsigned long)U16_MAX); in wbc_detach_inode()
713 inode->i_wb_frn_history = history; in wbc_detach_inode()
786 int inode_congested(struct inode *inode, int cong_bits) in inode_congested() argument
792 if (inode && inode_to_wb_is_valid(inode)) { in inode_congested()
797 wb = unlocked_inode_to_wb_begin(inode, &lock_cookie); in inode_congested()
799 unlocked_inode_to_wb_end(inode, &lock_cookie); in inode_congested()
803 return wb_congested(&inode_to_bdi(inode)->wb, cong_bits); in inode_congested()
1037 locked_inode_to_wb_and_lock_list(struct inode *inode) in locked_inode_to_wb_and_lock_list() argument
1038 __releases(&inode->i_lock) in locked_inode_to_wb_and_lock_list()
1041 struct bdi_writeback *wb = inode_to_wb(inode); in locked_inode_to_wb_and_lock_list()
1043 spin_unlock(&inode->i_lock); in locked_inode_to_wb_and_lock_list()
1048 static struct bdi_writeback *inode_to_wb_and_lock_list(struct inode *inode) in inode_to_wb_and_lock_list() argument
1051 struct bdi_writeback *wb = inode_to_wb(inode); in inode_to_wb_and_lock_list()
1130 void inode_io_list_del(struct inode *inode) in inode_io_list_del() argument
1134 wb = inode_to_wb_and_lock_list(inode); in inode_io_list_del()
1135 spin_lock(&inode->i_lock); in inode_io_list_del()
1136 inode_io_list_del_locked(inode, wb); in inode_io_list_del()
1137 spin_unlock(&inode->i_lock); in inode_io_list_del()
1145 void sb_mark_inode_writeback(struct inode *inode) in sb_mark_inode_writeback() argument
1147 struct super_block *sb = inode->i_sb; in sb_mark_inode_writeback()
1150 if (list_empty(&inode->i_wb_list)) { in sb_mark_inode_writeback()
1152 if (list_empty(&inode->i_wb_list)) { in sb_mark_inode_writeback()
1153 list_add_tail(&inode->i_wb_list, &sb->s_inodes_wb); in sb_mark_inode_writeback()
1154 trace_sb_mark_inode_writeback(inode); in sb_mark_inode_writeback()
1163 void sb_clear_inode_writeback(struct inode *inode) in sb_clear_inode_writeback() argument
1165 struct super_block *sb = inode->i_sb; in sb_clear_inode_writeback()
1168 if (!list_empty(&inode->i_wb_list)) { in sb_clear_inode_writeback()
1170 if (!list_empty(&inode->i_wb_list)) { in sb_clear_inode_writeback()
1171 list_del_init(&inode->i_wb_list); in sb_clear_inode_writeback()
1172 trace_sb_clear_inode_writeback(inode); in sb_clear_inode_writeback()
1187 static void redirty_tail_locked(struct inode *inode, struct bdi_writeback *wb) in redirty_tail_locked() argument
1189 assert_spin_locked(&inode->i_lock); in redirty_tail_locked()
1192 struct inode *tail; in redirty_tail_locked()
1195 if (time_before(inode->dirtied_when, tail->dirtied_when)) in redirty_tail_locked()
1196 inode->dirtied_when = jiffies; in redirty_tail_locked()
1198 inode_io_list_move_locked(inode, wb, &wb->b_dirty); in redirty_tail_locked()
1199 inode->i_state &= ~I_SYNC_QUEUED; in redirty_tail_locked()
1202 static void redirty_tail(struct inode *inode, struct bdi_writeback *wb) in redirty_tail() argument
1204 spin_lock(&inode->i_lock); in redirty_tail()
1205 redirty_tail_locked(inode, wb); in redirty_tail()
1206 spin_unlock(&inode->i_lock); in redirty_tail()
1212 static void requeue_io(struct inode *inode, struct bdi_writeback *wb) in requeue_io() argument
1214 inode_io_list_move_locked(inode, wb, &wb->b_more_io); in requeue_io()
1217 static void inode_sync_complete(struct inode *inode) in inode_sync_complete() argument
1219 inode->i_state &= ~I_SYNC; in inode_sync_complete()
1221 inode_add_lru(inode); in inode_sync_complete()
1224 wake_up_bit(&inode->i_state, __I_SYNC); in inode_sync_complete()
1227 static bool inode_dirtied_after(struct inode *inode, unsigned long t) in inode_dirtied_after() argument
1229 bool ret = time_after(inode->dirtied_when, t); in inode_dirtied_after()
1237 ret = ret && time_before_eq(inode->dirtied_when, jiffies); in inode_dirtied_after()
1255 struct inode *inode; in move_expired_inodes() local
1260 inode = wb_inode(delaying_queue->prev); in move_expired_inodes()
1261 if (inode_dirtied_after(inode, dirtied_before)) in move_expired_inodes()
1263 list_move(&inode->i_io_list, &tmp); in move_expired_inodes()
1265 spin_lock(&inode->i_lock); in move_expired_inodes()
1266 inode->i_state |= I_SYNC_QUEUED; in move_expired_inodes()
1267 spin_unlock(&inode->i_lock); in move_expired_inodes()
1268 if (sb_is_blkdev_sb(inode->i_sb)) in move_expired_inodes()
1270 if (sb && sb != inode->i_sb) in move_expired_inodes()
1272 sb = inode->i_sb; in move_expired_inodes()
1285 inode = wb_inode(pos); in move_expired_inodes()
1286 if (inode->i_sb == sb) in move_expired_inodes()
1287 list_move(&inode->i_io_list, dispatch_queue); in move_expired_inodes()
1323 static int write_inode(struct inode *inode, struct writeback_control *wbc) in write_inode() argument
1327 if (inode->i_sb->s_op->write_inode && !is_bad_inode(inode)) { in write_inode()
1328 trace_writeback_write_inode_start(inode, wbc); in write_inode()
1329 ret = inode->i_sb->s_op->write_inode(inode, wbc); in write_inode()
1330 trace_writeback_write_inode(inode, wbc); in write_inode()
1340 static void __inode_wait_for_writeback(struct inode *inode) in __inode_wait_for_writeback() argument
1341 __releases(inode->i_lock) in __inode_wait_for_writeback()
1342 __acquires(inode->i_lock) in __inode_wait_for_writeback()
1344 DEFINE_WAIT_BIT(wq, &inode->i_state, __I_SYNC); in __inode_wait_for_writeback()
1347 wqh = bit_waitqueue(&inode->i_state, __I_SYNC); in __inode_wait_for_writeback()
1348 while (inode->i_state & I_SYNC) { in __inode_wait_for_writeback()
1349 spin_unlock(&inode->i_lock); in __inode_wait_for_writeback()
1352 spin_lock(&inode->i_lock); in __inode_wait_for_writeback()
1359 void inode_wait_for_writeback(struct inode *inode) in inode_wait_for_writeback() argument
1361 spin_lock(&inode->i_lock); in inode_wait_for_writeback()
1362 __inode_wait_for_writeback(inode); in inode_wait_for_writeback()
1363 spin_unlock(&inode->i_lock); in inode_wait_for_writeback()
1371 static void inode_sleep_on_writeback(struct inode *inode) in inode_sleep_on_writeback() argument
1372 __releases(inode->i_lock) in inode_sleep_on_writeback()
1375 wait_queue_head_t *wqh = bit_waitqueue(&inode->i_state, __I_SYNC); in inode_sleep_on_writeback()
1379 sleep = inode->i_state & I_SYNC; in inode_sleep_on_writeback()
1380 spin_unlock(&inode->i_lock); in inode_sleep_on_writeback()
1394 static void requeue_inode(struct inode *inode, struct bdi_writeback *wb, in requeue_inode() argument
1397 if (inode->i_state & I_FREEING) in requeue_inode()
1405 if ((inode->i_state & I_DIRTY) && in requeue_inode()
1407 inode->dirtied_when = jiffies; in requeue_inode()
1414 redirty_tail_locked(inode, wb); in requeue_inode()
1418 if (mapping_tagged(inode->i_mapping, PAGECACHE_TAG_DIRTY)) { in requeue_inode()
1425 requeue_io(inode, wb); in requeue_inode()
1434 redirty_tail_locked(inode, wb); in requeue_inode()
1436 } else if (inode->i_state & I_DIRTY) { in requeue_inode()
1442 redirty_tail_locked(inode, wb); in requeue_inode()
1443 } else if (inode->i_state & I_DIRTY_TIME) { in requeue_inode()
1444 inode->dirtied_when = jiffies; in requeue_inode()
1445 inode_io_list_move_locked(inode, wb, &wb->b_dirty_time); in requeue_inode()
1446 inode->i_state &= ~I_SYNC_QUEUED; in requeue_inode()
1449 inode_io_list_del_locked(inode, wb); in requeue_inode()
1459 __writeback_single_inode(struct inode *inode, struct writeback_control *wbc) in __writeback_single_inode() argument
1461 struct address_space *mapping = inode->i_mapping; in __writeback_single_inode()
1466 WARN_ON(!(inode->i_state & I_SYNC)); in __writeback_single_inode()
1468 trace_writeback_single_inode_start(inode, wbc, nr_to_write); in __writeback_single_inode()
1490 if ((inode->i_state & I_DIRTY_TIME) && in __writeback_single_inode()
1492 time_after(jiffies, inode->dirtied_time_when + in __writeback_single_inode()
1494 trace_writeback_lazytime(inode); in __writeback_single_inode()
1495 mark_inode_dirty_sync(inode); in __writeback_single_inode()
1503 spin_lock(&inode->i_lock); in __writeback_single_inode()
1504 dirty = inode->i_state & I_DIRTY; in __writeback_single_inode()
1505 inode->i_state &= ~dirty; in __writeback_single_inode()
1521 inode->i_state |= I_DIRTY_PAGES; in __writeback_single_inode()
1523 spin_unlock(&inode->i_lock); in __writeback_single_inode()
1527 int err = write_inode(inode, wbc); in __writeback_single_inode()
1531 trace_writeback_single_inode(inode, wbc, nr_to_write); in __writeback_single_inode()
1543 static int writeback_single_inode(struct inode *inode, in writeback_single_inode() argument
1549 spin_lock(&inode->i_lock); in writeback_single_inode()
1550 if (!atomic_read(&inode->i_count)) in writeback_single_inode()
1551 WARN_ON(!(inode->i_state & (I_WILL_FREE|I_FREEING))); in writeback_single_inode()
1553 WARN_ON(inode->i_state & I_WILL_FREE); in writeback_single_inode()
1555 if (inode->i_state & I_SYNC) { in writeback_single_inode()
1563 __inode_wait_for_writeback(inode); in writeback_single_inode()
1565 WARN_ON(inode->i_state & I_SYNC); in writeback_single_inode()
1574 if (!(inode->i_state & I_DIRTY_ALL) && in writeback_single_inode()
1576 !mapping_tagged(inode->i_mapping, PAGECACHE_TAG_WRITEBACK))) in writeback_single_inode()
1578 inode->i_state |= I_SYNC; in writeback_single_inode()
1579 wbc_attach_and_unlock_inode(wbc, inode); in writeback_single_inode()
1581 ret = __writeback_single_inode(inode, wbc); in writeback_single_inode()
1585 wb = inode_to_wb_and_lock_list(inode); in writeback_single_inode()
1586 spin_lock(&inode->i_lock); in writeback_single_inode()
1591 if (!(inode->i_state & I_DIRTY_ALL)) in writeback_single_inode()
1592 inode_io_list_del_locked(inode, wb); in writeback_single_inode()
1594 inode_sync_complete(inode); in writeback_single_inode()
1596 spin_unlock(&inode->i_lock); in writeback_single_inode()
1659 struct inode *inode = wb_inode(wb->b_io.prev); in writeback_sb_inodes() local
1663 if (inode->i_sb != sb) { in writeback_sb_inodes()
1670 redirty_tail(inode, wb); in writeback_sb_inodes()
1687 spin_lock(&inode->i_lock); in writeback_sb_inodes()
1688 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { in writeback_sb_inodes()
1689 redirty_tail_locked(inode, wb); in writeback_sb_inodes()
1690 spin_unlock(&inode->i_lock); in writeback_sb_inodes()
1693 if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) { in writeback_sb_inodes()
1703 spin_unlock(&inode->i_lock); in writeback_sb_inodes()
1704 requeue_io(inode, wb); in writeback_sb_inodes()
1705 trace_writeback_sb_inodes_requeue(inode); in writeback_sb_inodes()
1715 if (inode->i_state & I_SYNC) { in writeback_sb_inodes()
1717 inode_sleep_on_writeback(inode); in writeback_sb_inodes()
1722 inode->i_state |= I_SYNC; in writeback_sb_inodes()
1723 wbc_attach_and_unlock_inode(&wbc, inode); in writeback_sb_inodes()
1733 __writeback_single_inode(inode, &wbc); in writeback_sb_inodes()
1758 tmp_wb = inode_to_wb_and_lock_list(inode); in writeback_sb_inodes()
1759 spin_lock(&inode->i_lock); in writeback_sb_inodes()
1760 if (!(inode->i_state & I_DIRTY_ALL)) in writeback_sb_inodes()
1762 requeue_inode(inode, tmp_wb, &wbc); in writeback_sb_inodes()
1763 inode_sync_complete(inode); in writeback_sb_inodes()
1764 spin_unlock(&inode->i_lock); in writeback_sb_inodes()
1792 struct inode *inode = wb_inode(wb->b_io.prev); in __writeback_inodes_wb() local
1793 struct super_block *sb = inode->i_sb; in __writeback_inodes_wb()
1801 redirty_tail(inode, wb); in __writeback_inodes_wb()
1862 struct inode *inode; in wb_writeback() local
1936 inode = wb_inode(wb->b_more_io.prev); in wb_writeback()
1937 spin_lock(&inode->i_lock); in wb_writeback()
1940 inode_sleep_on_writeback(inode); in wb_writeback()
2237 void __mark_inode_dirty(struct inode *inode, int flags) in __mark_inode_dirty() argument
2239 struct super_block *sb = inode->i_sb; in __mark_inode_dirty()
2242 trace_writeback_mark_inode_dirty(inode, flags); in __mark_inode_dirty()
2249 trace_writeback_dirty_inode_start(inode, flags); in __mark_inode_dirty()
2252 sb->s_op->dirty_inode(inode, flags); in __mark_inode_dirty()
2254 trace_writeback_dirty_inode(inode, flags); in __mark_inode_dirty()
2266 if (((inode->i_state & flags) == flags) || in __mark_inode_dirty()
2267 (dirtytime && (inode->i_state & I_DIRTY_INODE))) in __mark_inode_dirty()
2270 spin_lock(&inode->i_lock); in __mark_inode_dirty()
2271 if (dirtytime && (inode->i_state & I_DIRTY_INODE)) in __mark_inode_dirty()
2273 if ((inode->i_state & flags) != flags) { in __mark_inode_dirty()
2274 const int was_dirty = inode->i_state & I_DIRTY; in __mark_inode_dirty()
2276 inode_attach_wb(inode, NULL); in __mark_inode_dirty()
2279 inode->i_state &= ~I_DIRTY_TIME; in __mark_inode_dirty()
2280 inode->i_state |= flags; in __mark_inode_dirty()
2288 if (inode->i_state & I_SYNC_QUEUED) in __mark_inode_dirty()
2295 if (!S_ISBLK(inode->i_mode)) { in __mark_inode_dirty()
2296 if (inode_unhashed(inode)) in __mark_inode_dirty()
2299 if (inode->i_state & I_FREEING) in __mark_inode_dirty()
2311 wb = locked_inode_to_wb_and_lock_list(inode); in __mark_inode_dirty()
2317 inode->dirtied_when = jiffies; in __mark_inode_dirty()
2319 inode->dirtied_time_when = jiffies; in __mark_inode_dirty()
2321 if (inode->i_state & I_DIRTY) in __mark_inode_dirty()
2326 wakeup_bdi = inode_io_list_move_locked(inode, wb, in __mark_inode_dirty()
2330 trace_writeback_dirty_inode_enqueue(inode); in __mark_inode_dirty()
2345 spin_unlock(&inode->i_lock); in __mark_inode_dirty()
2391 struct inode *inode = list_first_entry(&sync_list, struct inode, in wait_sb_inodes() local
2393 struct address_space *mapping = inode->i_mapping; in wait_sb_inodes()
2401 list_move_tail(&inode->i_wb_list, &sb->s_inodes_wb); in wait_sb_inodes()
2413 spin_lock(&inode->i_lock); in wait_sb_inodes()
2414 if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) { in wait_sb_inodes()
2415 spin_unlock(&inode->i_lock); in wait_sb_inodes()
2420 __iget(inode); in wait_sb_inodes()
2421 spin_unlock(&inode->i_lock); in wait_sb_inodes()
2433 iput(inode); in wait_sb_inodes()
2565 int write_inode_now(struct inode *inode, int sync) in write_inode_now() argument
2574 if (!mapping_can_writeback(inode->i_mapping)) in write_inode_now()
2578 return writeback_single_inode(inode, &wbc); in write_inode_now()
2593 int sync_inode(struct inode *inode, struct writeback_control *wbc) in sync_inode() argument
2595 return writeback_single_inode(inode, wbc); in sync_inode()
2608 int sync_inode_metadata(struct inode *inode, int wait) in sync_inode_metadata() argument
2615 return sync_inode(inode, &wbc); in sync_inode_metadata()