Is this exact backport from lttng-modules repo? I came across this issue in https://github.com/agherzan/meta-raspberrypi/pull/722 and https://github.com/lttng/lttng-modules/commit/817e02f9e256b8f2cbb9e3125eb061757b83bd4a + https://github.com/lttng/lttng-modules/commit/b6af46d166c48c9e59600a60b5a2a7ead10f179a look a bit different than this one (and are more correct with fixed kernel ranges as not every > 5.4.62 kernel had this change).
On Mon, Sep 14, 2020 at 10:11 PM Bruce Ashfield <bruce.ashfi...@gmail.com> wrote: > 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 <rehs...@gmail.com> wrote: > > > > From: Jens Rehsack <s...@netbsd.org> > > > > 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 <s...@netbsd.org> > > --- > > ...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 <mjean...@efficios.com> > > +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 <j...@suse.cz> > > + 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 <mjean...@efficios.com> > > +Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com> > > +--- > > + .../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 (#142552): https://lists.openembedded.org/g/openembedded-core/message/142552 Mute This Topic: https://lists.openembedded.org/mt/76837437/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-