Message ID | 20240228091958.288260-5-shikemeng@huaweicloud.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixes and cleanups to fs-writeback | expand |
On Wed 28-02-24 17:19:56, Kemeng Shi wrote: > 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> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- a/fs/fs-writeback.c > +++ b/fs/fs-writeback.c > @@ -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; > } > -- > 2.30.0 >
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1c3134817865..c98684e9e6ba 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -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; }
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> --- fs/fs-writeback.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)