Commit 639924ab authored by Kemeng Shi's avatar Kemeng Shi Committed by Christian Brauner

fs/writeback: only calculate dirtied_before when b_io is empty

The dirtied_before is only used when b_io is not empty, so only calculate
when b_io is not empty.
Signed-off-by: default avatarKemeng Shi <shikemeng@huaweicloud.com>
Link: https://lore.kernel.org/r/20240228091958.288260-5-shikemeng@huaweicloud.comReviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 2ddc9346
...@@ -2105,20 +2105,21 @@ static long wb_writeback(struct bdi_writeback *wb, ...@@ -2105,20 +2105,21 @@ static long wb_writeback(struct bdi_writeback *wb,
spin_lock(&wb->list_lock); spin_lock(&wb->list_lock);
trace_writeback_start(wb, work);
if (list_empty(&wb->b_io)) {
/* /*
* Kupdate and background works are special and we want to * Kupdate and background works are special and we want
* include all inodes that need writing. Livelock avoidance is * to include all inodes that need writing. Livelock
* handled by these works yielding to any other work so we are * avoidance is handled by these works yielding to any
* safe. * other work so we are safe.
*/ */
if (work->for_kupdate) { if (work->for_kupdate) {
dirtied_before = jiffies - dirtied_before = jiffies -
msecs_to_jiffies(dirty_expire_interval * 10); msecs_to_jiffies(dirty_expire_interval *
10);
} else if (work->for_background) } else if (work->for_background)
dirtied_before = jiffies; dirtied_before = jiffies;
trace_writeback_start(wb, work);
if (list_empty(&wb->b_io)) {
queue_io(wb, work, dirtied_before); queue_io(wb, work, dirtied_before);
queued = true; queued = true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment