diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 00ce176738b3..57a6f1f37fdc 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -1113,13 +1113,6 @@ static void redirty_tail(struct inode *inode, struct bdi_writeback *wb) spin_unlock(&inode->i_lock); } -static void redirty_tail(struct inode *inode, struct bdi_writeback *wb) -{ - spin_lock(&inode->i_lock); - redirty_tail_locked(inode, wb); - spin_unlock(&inode->i_lock); -} - /* * requeue inode for re-scanning after bdi->b_io list is exhausted. */ @@ -1177,6 +1170,8 @@ static int move_expired_inodes(struct list_head *delaying_queue, list_move(&inode->i_io_list, &tmp); moved++; spin_lock(&inode->i_lock); + if (flags & EXPIRE_DIRTY_ATIME) + inode->i_state |= I_DIRTY_TIME_EXPIRED; inode->i_state |= I_SYNC_QUEUED; spin_unlock(&inode->i_lock); if (sb_is_blkdev_sb(inode->i_sb)) @@ -1224,11 +1219,11 @@ static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work, assert_spin_locked(&wb->list_lock); list_splice_init(&wb->b_more_io, &wb->b_io); - moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, dirtied_before); + moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, 0, dirtied_before); if (!work->for_sync) time_expire_jif = jiffies - dirtytime_expire_interval * HZ; moved += move_expired_inodes(&wb->b_dirty_time, &wb->b_io, - time_expire_jif); + EXPIRE_DIRTY_ATIME, time_expire_jif); if (moved) wb_io_lists_populated(wb); trace_writeback_queue_io(wb, work, dirtied_before, moved); @@ -2542,4 +2537,4 @@ int sync_inode_metadata(struct inode *inode, int wait) return sync_inode(inode, &wbc); } -EXPORT_SYMBOL(sync_inode_metadata); +EXPORT_SYMBOL(sync_inode_metadata); \ No newline at end of file