mirror of
https://github.com/torvalds/linux
synced 2024-07-22 03:01:14 +00:00
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: Kemeng Shi <shikemeng@huaweicloud.com> Link: https://lore.kernel.org/r/20240228091958.288260-5-shikemeng@huaweicloud.com Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
2ddc934612
commit
639924abc1
|
@ -2105,20 +2105,21 @@ static long wb_writeback(struct bdi_writeback *wb,
|
|||
|
||||
spin_lock(&wb->list_lock);
|
||||
|
||||
/*
|
||||
* Kupdate and background works are special and we want to
|
||||
* include all inodes that need writing. Livelock avoidance is
|
||||
* handled by these works yielding to any other work so we are
|
||||
* safe.
|
||||
*/
|
||||
if (work->for_kupdate) {
|
||||
dirtied_before = jiffies -
|
||||
msecs_to_jiffies(dirty_expire_interval * 10);
|
||||
} else if (work->for_background)
|
||||
dirtied_before = jiffies;
|
||||
|
||||
trace_writeback_start(wb, work);
|
||||
if (list_empty(&wb->b_io)) {
|
||||
/*
|
||||
* Kupdate and background works are special and we want
|
||||
* to include all inodes that need writing. Livelock
|
||||
* avoidance is handled by these works yielding to any
|
||||
* other work so we are safe.
|
||||
*/
|
||||
if (work->for_kupdate) {
|
||||
dirtied_before = jiffies -
|
||||
msecs_to_jiffies(dirty_expire_interval *
|
||||
10);
|
||||
} else if (work->for_background)
|
||||
dirtied_before = jiffies;
|
||||
|
||||
queue_io(wb, work, dirtied_before);
|
||||
queued = true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue