]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
fixes for 4.4
authorSasha Levin <sashal@kernel.org>
Thu, 16 Jan 2020 23:05:16 +0000 (18:05 -0500)
committerSasha Levin <sashal@kernel.org>
Thu, 16 Jan 2020 23:08:29 +0000 (18:08 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/hexagon-work-around-compiler-crash.patch [new file with mode: 0644]
queue-4.4/ocfs2-call-journal-flush-to-mark-journal-as-empty-af.patch [new file with mode: 0644]
queue-4.4/rseq-selftests-turn-off-timeout-setting.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/hexagon-work-around-compiler-crash.patch b/queue-4.4/hexagon-work-around-compiler-crash.patch
new file mode 100644 (file)
index 0000000..3169661
--- /dev/null
@@ -0,0 +1,52 @@
+From c37a53671abc80e0f9bae7d3468ec9fb92fc0718 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 4 Jan 2020 13:00:02 -0800
+Subject: hexagon: work around compiler crash
+
+From: Nick Desaulniers <ndesaulniers@google.com>
+
+[ Upstream commit 63e80314ab7cf4783526d2e44ee57a90514911c9 ]
+
+Clang cannot translate the string "r30" into a valid register yet.
+
+Link: https://github.com/ClangBuiltLinux/linux/issues/755
+Link: http://lkml.kernel.org/r/20191028155722.23419-1-ndesaulniers@google.com
+Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+Suggested-by: Sid Manning <sidneym@quicinc.com>
+Reviewed-by: Brian Cain <bcain@codeaurora.org>
+Cc: Allison Randal <allison@lohutok.net>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Richard Fontana <rfontana@redhat.com>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/hexagon/kernel/stacktrace.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/arch/hexagon/kernel/stacktrace.c b/arch/hexagon/kernel/stacktrace.c
+index f94918b449a8..03a0e10ecdcc 100644
+--- a/arch/hexagon/kernel/stacktrace.c
++++ b/arch/hexagon/kernel/stacktrace.c
+@@ -23,8 +23,6 @@
+ #include <linux/thread_info.h>
+ #include <linux/module.h>
+-register unsigned long current_frame_pointer asm("r30");
+-
+ struct stackframe {
+       unsigned long fp;
+       unsigned long rets;
+@@ -42,7 +40,7 @@ void save_stack_trace(struct stack_trace *trace)
+       low = (unsigned long)task_stack_page(current);
+       high = low + THREAD_SIZE;
+-      fp = current_frame_pointer;
++      fp = (unsigned long)__builtin_frame_address(0);
+       while (fp >= low && fp <= (high - sizeof(*frame))) {
+               frame = (struct stackframe *)fp;
+-- 
+2.20.1
+
diff --git a/queue-4.4/ocfs2-call-journal-flush-to-mark-journal-as-empty-af.patch b/queue-4.4/ocfs2-call-journal-flush-to-mark-journal-as-empty-af.patch
new file mode 100644 (file)
index 0000000..ae004db
--- /dev/null
@@ -0,0 +1,138 @@
+From a33423558ca9f68f3a5d498368b7f4773228644b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 4 Jan 2020 13:00:18 -0800
+Subject: ocfs2: call journal flush to mark journal as empty after journal
+ recovery when mount
+
+From: Kai Li <li.kai4@h3c.com>
+
+[ Upstream commit 397eac17f86f404f5ba31d8c3e39ec3124b39fd3 ]
+
+If journal is dirty when mount, it will be replayed but jbd2 sb log tail
+cannot be updated to mark a new start because journal->j_flag has
+already been set with JBD2_ABORT first in journal_init_common.
+
+When a new transaction is committed, it will be recored in block 1
+first(journal->j_tail is set to 1 in journal_reset).  If emergency
+restart happens again before journal super block is updated
+unfortunately, the new recorded trans will not be replayed in the next
+mount.
+
+The following steps describe this procedure in detail.
+1. mount and touch some files
+2. these transactions are committed to journal area but not checkpointed
+3. emergency restart
+4. mount again and its journals are replayed
+5. journal super block's first s_start is 1, but its s_seq is not updated
+6. touch a new file and its trans is committed but not checkpointed
+7. emergency restart again
+8. mount and journal is dirty, but trans committed in 6 will not be
+replayed.
+
+This exception happens easily when this lun is used by only one node.
+If it is used by multi-nodes, other node will replay its journal and its
+journal super block will be updated after recovery like what this patch
+does.
+
+ocfs2_recover_node->ocfs2_replay_journal.
+
+The following jbd2 journal can be generated by touching a new file after
+journal is replayed, and seq 15 is the first valid commit, but first seq
+is 13 in journal super block.
+
+logdump:
+  Block 0: Journal Superblock
+  Seq: 0   Type: 4 (JBD2_SUPERBLOCK_V2)
+  Blocksize: 4096   Total Blocks: 32768   First Block: 1
+  First Commit ID: 13   Start Log Blknum: 1
+  Error: 0
+  Feature Compat: 0
+  Feature Incompat: 2 block64
+  Feature RO compat: 0
+  Journal UUID: 4ED3822C54294467A4F8E87D2BA4BC36
+  FS Share Cnt: 1   Dynamic Superblk Blknum: 0
+  Per Txn Block Limit    Journal: 0    Data: 0
+
+  Block 1: Journal Commit Block
+  Seq: 14   Type: 2 (JBD2_COMMIT_BLOCK)
+
+  Block 2: Journal Descriptor
+  Seq: 15   Type: 1 (JBD2_DESCRIPTOR_BLOCK)
+  No. Blocknum        Flags
+   0. 587             none
+  UUID: 00000000000000000000000000000000
+   1. 8257792         JBD2_FLAG_SAME_UUID
+   2. 619             JBD2_FLAG_SAME_UUID
+   3. 24772864        JBD2_FLAG_SAME_UUID
+   4. 8257802         JBD2_FLAG_SAME_UUID
+   5. 513             JBD2_FLAG_SAME_UUID JBD2_FLAG_LAST_TAG
+  ...
+  Block 7: Inode
+  Inode: 8257802   Mode: 0640   Generation: 57157641 (0x3682809)
+  FS Generation: 2839773110 (0xa9437fb6)
+  CRC32: 00000000   ECC: 0000
+  Type: Regular   Attr: 0x0   Flags: Valid
+  Dynamic Features: (0x1) InlineData
+  User: 0 (root)   Group: 0 (root)   Size: 7
+  Links: 1   Clusters: 0
+  ctime: 0x5de5d870 0x11104c61 -- Tue Dec  3 11:37:20.286280801 2019
+  atime: 0x5de5d870 0x113181a1 -- Tue Dec  3 11:37:20.288457121 2019
+  mtime: 0x5de5d870 0x11104c61 -- Tue Dec  3 11:37:20.286280801 2019
+  dtime: 0x0 -- Thu Jan  1 08:00:00 1970
+  ...
+  Block 9: Journal Commit Block
+  Seq: 15   Type: 2 (JBD2_COMMIT_BLOCK)
+
+The following is journal recovery log when recovering the upper jbd2
+journal when mount again.
+
+syslog:
+  ocfs2: File system on device (252,1) was not unmounted cleanly, recovering it.
+  fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 0
+  fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 1
+  fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 2
+  fs/jbd2/recovery.c:(jbd2_journal_recover, 278): JBD2: recovery, exit status 0, recovered transactions 13 to 13
+
+Due to first commit seq 13 recorded in journal super is not consistent
+with the value recorded in block 1(seq is 14), journal recovery will be
+terminated before seq 15 even though it is an unbroken commit, inode
+8257802 is a new file and it will be lost.
+
+Link: http://lkml.kernel.org/r/20191217020140.2197-1-li.kai4@h3c.com
+Signed-off-by: Kai Li <li.kai4@h3c.com>
+Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Reviewed-by: Changwei Ge <gechangwei@live.cn>
+Cc: Mark Fasheh <mark@fasheh.com>
+Cc: Joel Becker <jlbec@evilplan.org>
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Gang He <ghe@suse.com>
+Cc: Jun Piao <piaojun@huawei.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ocfs2/journal.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
+index 2301011428a1..bbf1634ff427 100644
+--- a/fs/ocfs2/journal.c
++++ b/fs/ocfs2/journal.c
+@@ -1080,6 +1080,14 @@ int ocfs2_journal_load(struct ocfs2_journal *journal, int local, int replayed)
+       ocfs2_clear_journal_error(osb->sb, journal->j_journal, osb->slot_num);
++      if (replayed) {
++              jbd2_journal_lock_updates(journal->j_journal);
++              status = jbd2_journal_flush(journal->j_journal);
++              jbd2_journal_unlock_updates(journal->j_journal);
++              if (status < 0)
++                      mlog_errno(status);
++      }
++
+       status = ocfs2_journal_toggle_dirty(osb, 1, replayed);
+       if (status < 0) {
+               mlog_errno(status);
+-- 
+2.20.1
+
diff --git a/queue-4.4/rseq-selftests-turn-off-timeout-setting.patch b/queue-4.4/rseq-selftests-turn-off-timeout-setting.patch
new file mode 100644 (file)
index 0000000..b3ec340
--- /dev/null
@@ -0,0 +1,38 @@
+From 1ae746075473959c6eeef9ff6aabd4c0cfa3cd00 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 11 Dec 2019 11:28:57 -0500
+Subject: rseq/selftests: Turn off timeout setting
+
+From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+
+[ Upstream commit af9cb29c5488381083b0b5ccdfb3cd931063384a ]
+
+As the rseq selftests can run for a long period of time, disable the
+timeout that the general selftests have.
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Cc: Shuah Khan <skhan@linuxfoundation.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
+Cc: "Paul E. McKenney" <paulmck@linux.ibm.com>
+Cc: Boqun Feng <boqun.feng@gmail.com>
+Cc: "H . Peter Anvin" <hpa@zytor.com>
+Cc: Paul Turner <pjt@google.com>
+Cc: Dmitry Vyukov <dvyukov@google.com>
+Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/testing/selftests/rseq/settings | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 100644 tools/testing/selftests/rseq/settings
+
+diff --git a/tools/testing/selftests/rseq/settings b/tools/testing/selftests/rseq/settings
+new file mode 100644
+index 000000000000..e7b9417537fb
+--- /dev/null
++++ b/tools/testing/selftests/rseq/settings
+@@ -0,0 +1 @@
++timeout=0
+-- 
+2.20.1
+
index fd38ce33d763ce58d8e660f12366aa7fa5bb19db..d760d4619acfd5f561fc558e05a7f16bfb51db73 100644 (file)
@@ -34,3 +34,6 @@ media-exynos4-is-fix-recursive-locking-in-isp_video_release.patch
 spi-atmel-fix-handling-of-cs_change-set-on-non-last-xfer.patch
 rtlwifi-remove-unnecessary-null-check-in-rtl_regd_init.patch
 rtc-msm6242-fix-reading-of-10-hour-digit.patch
+rseq-selftests-turn-off-timeout-setting.patch
+hexagon-work-around-compiler-crash.patch
+ocfs2-call-journal-flush-to-mark-journal-as-empty-af.patch