diff options
Diffstat (limited to 'meta/recipes-kernel/lttng/lttng-modules/0008-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch')
| -rw-r--r-- | meta/recipes-kernel/lttng/lttng-modules/0008-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0008-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch b/meta/recipes-kernel/lttng/lttng-modules/0008-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch deleted file mode 100644 index 7a0d9a38b8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0008-fix-writeback-Fix-sync-livelock-due-to-b_dirty_time-.patch +++ /dev/null | |||
| @@ -1,117 +0,0 @@ | |||
| 1 | From 87b2affc3eb06f3fb2d0923f18af37713eb6814b Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Michael Jeanson <mjeanson@efficios.com> | ||
| 3 | Date: Mon, 31 Aug 2020 14:16:01 -0400 | ||
| 4 | Subject: [PATCH 08/10] fix: writeback: Fix sync livelock due to b_dirty_time | ||
| 5 | processing (v5.9) | ||
| 6 | |||
| 7 | See upstream commit: | ||
| 8 | |||
| 9 | commit f9cae926f35e8230330f28c7b743ad088611a8de | ||
| 10 | Author: Jan Kara <jack@suse.cz> | ||
| 11 | Date: Fri May 29 16:08:58 2020 +0200 | ||
| 12 | |||
| 13 | writeback: Fix sync livelock due to b_dirty_time processing | ||
| 14 | |||
| 15 | When we are processing writeback for sync(2), move_expired_inodes() | ||
| 16 | didn't set any inode expiry value (older_than_this). This can result in | ||
| 17 | writeback never completing if there's steady stream of inodes added to | ||
| 18 | b_dirty_time list as writeback rechecks dirty lists after each writeback | ||
| 19 | round whether there's more work to be done. Fix the problem by using | ||
| 20 | sync(2) start time is inode expiry value when processing b_dirty_time | ||
| 21 | list similarly as for ordinarily dirtied inodes. This requires some | ||
| 22 | refactoring of older_than_this handling which simplifies the code | ||
| 23 | noticeably as a bonus. | ||
| 24 | |||
| 25 | Upstream-Status: Backport | ||
| 26 | |||
| 27 | Change-Id: I8b894b13ccc14d9b8983ee4c2810a927c319560b | ||
| 28 | Signed-off-by: Michael Jeanson <mjeanson@efficios.com> | ||
| 29 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
| 30 | --- | ||
| 31 | .../events/lttng-module/writeback.h | 39 ++++++++++++------- | ||
| 32 | 1 file changed, 26 insertions(+), 13 deletions(-) | ||
| 33 | |||
| 34 | diff --git a/instrumentation/events/lttng-module/writeback.h b/instrumentation/events/lttng-module/writeback.h | ||
| 35 | index ece67ad..e9018dd 100644 | ||
| 36 | --- a/instrumentation/events/lttng-module/writeback.h | ||
| 37 | +++ b/instrumentation/events/lttng-module/writeback.h | ||
| 38 | @@ -384,34 +384,48 @@ LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_balance_dirty_wait, writeback_wbc_balanc | ||
| 39 | #endif | ||
| 40 | LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writepage, writeback_wbc_writepage) | ||
| 41 | |||
| 42 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) | ||
| 43 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)) | ||
| 44 | +LTTNG_TRACEPOINT_EVENT(writeback_queue_io, | ||
| 45 | + TP_PROTO(struct bdi_writeback *wb, | ||
| 46 | + struct wb_writeback_work *work, | ||
| 47 | + unsigned long dirtied_before, | ||
| 48 | + int moved), | ||
| 49 | + TP_ARGS(wb, work, dirtied_before, moved), | ||
| 50 | + TP_FIELDS( | ||
| 51 | + ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) | ||
| 52 | + ctf_integer(unsigned long, older, dirtied_before) | ||
| 53 | + ctf_integer(int, moved, moved) | ||
| 54 | + ) | ||
| 55 | +) | ||
| 56 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) | ||
| 57 | LTTNG_TRACEPOINT_EVENT(writeback_queue_io, | ||
| 58 | TP_PROTO(struct bdi_writeback *wb, | ||
| 59 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) | ||
| 60 | struct wb_writeback_work *work, | ||
| 61 | -#else | ||
| 62 | - unsigned long *older_than_this, | ||
| 63 | -#endif | ||
| 64 | int moved), | ||
| 65 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) | ||
| 66 | TP_ARGS(wb, work, moved), | ||
| 67 | -#else | ||
| 68 | + TP_FIELDS( | ||
| 69 | + ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) | ||
| 70 | + ctf_integer(int, moved, moved) | ||
| 71 | + ) | ||
| 72 | +) | ||
| 73 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) | ||
| 74 | +LTTNG_TRACEPOINT_EVENT(writeback_queue_io, | ||
| 75 | + TP_PROTO(struct bdi_writeback *wb, | ||
| 76 | + unsigned long *older_than_this, | ||
| 77 | + int moved), | ||
| 78 | TP_ARGS(wb, older_than_this, moved), | ||
| 79 | -#endif | ||
| 80 | TP_FIELDS( | ||
| 81 | ctf_array_text(char, name, dev_name(wb->bdi->dev), 32) | ||
| 82 | -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) | ||
| 83 | -#else | ||
| 84 | ctf_integer(unsigned long, older, | ||
| 85 | older_than_this ? *older_than_this : 0) | ||
| 86 | ctf_integer(long, age, | ||
| 87 | older_than_this ? | ||
| 88 | (jiffies - *older_than_this) * 1000 / HZ | ||
| 89 | : -1) | ||
| 90 | -#endif | ||
| 91 | ctf_integer(int, moved, moved) | ||
| 92 | ) | ||
| 93 | ) | ||
| 94 | +#endif | ||
| 95 | |||
| 96 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) | ||
| 97 | LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, | ||
| 98 | @@ -460,7 +474,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, | ||
| 99 | ctf_integer(unsigned long, dirty_limit, global_dirty_limit) | ||
| 100 | ) | ||
| 101 | ) | ||
| 102 | -#else | ||
| 103 | +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) | ||
| 104 | LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, | ||
| 105 | |||
| 106 | writeback_global_dirty_state, | ||
| 107 | @@ -485,7 +499,6 @@ LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state, | ||
| 108 | ) | ||
| 109 | ) | ||
| 110 | #endif | ||
| 111 | -#endif | ||
| 112 | |||
| 113 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) | ||
| 114 | |||
| 115 | -- | ||
| 116 | 2.19.1 | ||
| 117 | |||
