In my latest round of linux-yocto reference updates, I ran into these same issues, but I needed to pull in more of the fixes on the 2.12 branch than just this to get things building against 5.8.9.
I didn't need to tweak any of the patches for v5.4.64+ here. I have 10 backported patches and confirmed my 5.8.9 and 5.4.65 both build with the changes. I can submit that patch along with my reference kernel bumps later today. Bruce On Mon, Sep 14, 2020 at 3:52 AM Jens Rehsack <[email protected]> wrote: > > From: Jens Rehsack <[email protected]> > > Backport patch from lttng-modules/stable-2.12 > 87b2aff fix: writeback: Fix sync livelock due to b_dirty_time processing > (v5.9) > > with minor modfication to catch > 6623c19042b6 writeback: Fix sync livelock due to b_dirty_time processing > > from linux/stable-5.4 v5.4.62+ > > Signed-off-by: Jens Rehsack <[email protected]> > --- > ...x-sync-livelock-due-to-b_dirty_time-.patch | 117 ++++++++++++++++++ > .../lttng/lttng-modules_2.12.2.bb | 1 + > 2 files changed, 118 insertions(+) > create mode 100644 > meta/recipes-kernel/lttng/lttng-modules/0001-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch > > diff --git > a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch > > b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch > new file mode 100644 > index 0000000000..96a1c486ef > --- /dev/null > +++ > b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch > @@ -0,0 +1,117 @@ > +From 87b2affc3eb06f3fb2d0923f18af37713eb6814b Mon Sep 17 00:00:00 2001 > +From: Michael Jeanson <[email protected]> > +Date: Mon, 31 Aug 2020 14:16:01 -0400 > +Subject: [PATCH] fix: writeback: Fix sync livelock due to b_dirty_time > + processing (v5.9) > + > +See upstream commit: > + > + commit f9cae926f35e8230330f28c7b743ad088611a8de > + Author: Jan Kara <[email protected]> > + Date: Fri May 29 16:08:58 2020 +0200 > + > + writeback: Fix sync livelock due to b_dirty_time processing > + > + When we are processing writeback for sync(2), move_expired_inodes() > + didn't set any inode expiry value (older_than_this). This can result in > + writeback never completing if there's steady stream of inodes added to > + b_dirty_time list as writeback rechecks dirty lists after each writeback > + round whether there's more work to be done. Fix the problem by using > + sync(2) start time is inode expiry value when processing b_dirty_time > + list similarly as for ordinarily dirtied inodes. This requires some > + refactoring of older_than_this handling which simplifies the code > + noticeably as a bonus. > + > +Change-Id: I8b894b13ccc14d9b8983ee4c2810a927c319560b > +Signed-off-by: Michael Jeanson <[email protected]> > +Signed-off-by: Mathieu Desnoyers <[email protected]> > +--- > + .../events/lttng-module/writeback.h | 39 ++++++++++++------- > + 1 file changed, 26 insertions(+), 13 deletions(-) > + > +Upstream Status: Backport > + > +diff --git a/instrumentation/events/lttng-module/writeback.h > b/instrumentation/events/lttng-module/writeback.h > +index ece67ad..e9018dd 100644 > +--- a/instrumentation/events/lttng-module/writeback.h > ++++ b/instrumentation/events/lttng-module/writeback.h > +@@ -384,34 +384,48 @@ > LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_balance_dirty_wait, > writeback_wbc_balanc > + #endif > + LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writepage, writeback_wbc_writepage) > + > +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) > ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)) || (LINUX_VERSION_CODE >= > KERNEL_VERSION(5,4,62)) > ++LTTNG_TRACEPOINT_EVENT(writeback_queue_io, > ++ TP_PROTO(struct bdi_writeback *wb, > ++ struct wb_writeback_work *work, > ++ unsigned long dirtied_before, > ++ int moved), > ++ TP_ARGS(wb, work, dirtied_before, moved), > ++ TP_FIELDS( > ++ ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) > ++ ctf_integer(unsigned long, older, dirtied_before) > ++ ctf_integer(int, moved, moved) > ++ ) > ++) > ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) > + LTTNG_TRACEPOINT_EVENT(writeback_queue_io, > + TP_PROTO(struct bdi_writeback *wb, > +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) > + struct wb_writeback_work *work, > +-#else > +- unsigned long *older_than_this, > +-#endif > + int moved), > +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) > + TP_ARGS(wb, work, moved), > +-#else > ++ TP_FIELDS( > ++ ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) > ++ ctf_integer(int, moved, moved) > ++ ) > ++) > ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) > ++LTTNG_TRACEPOINT_EVENT(writeback_queue_io, > ++ TP_PROTO(struct bdi_writeback *wb, > ++ unsigned long *older_than_this, > ++ int moved), > + TP_ARGS(wb, older_than_this, moved), > +-#endif > + TP_FIELDS( > + ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) > +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) > +-#else > + ctf_integer(unsigned long, older, > + older_than_this ? *older_than_this : 0) > + ctf_integer(long, age, > + older_than_this ? > + (jiffies - *older_than_this) * 1000 / HZ > + : -1) > +-#endif > + ctf_integer(int, moved, moved) > + ) > + ) > ++#endif > + > + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) > + LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, > +@@ -460,7 +474,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, > + ctf_integer(unsigned long, dirty_limit, global_dirty_limit) > + ) > + ) > +-#else > ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) > + LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, > + > + writeback_global_dirty_state, > +@@ -485,7 +499,6 @@ LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, > + ) > + ) > + #endif > +-#endif > + > + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) > + > +-- > +2.17.1 > + > diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.12.2.bb > b/meta/recipes-kernel/lttng/lttng-modules_2.12.2.bb > index 0e1a209ce8..f58b3bf0d7 100644 > --- a/meta/recipes-kernel/lttng/lttng-modules_2.12.2.bb > +++ b/meta/recipes-kernel/lttng/lttng-modules_2.12.2.bb > @@ -10,6 +10,7 @@ include lttng-platforms.inc > > SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ > file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch > \ > + > file://0001-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch \ > file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ > " > > -- > 2.17.1 > > -- - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#142551): https://lists.openembedded.org/g/openembedded-core/message/142551 Mute This Topic: https://lists.openembedded.org/mt/76837437/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
