logged_chars would be set to 0 by `dmesg -c`, but full dmesg is useful
for debugging. So instead of using logged_chars directly, we calculate
it by ourselves.

Now logged_chars is set to the minimum of log_end and log_buf_len, as
the same logic as crash utility is using.

Signed-off-by: Dangyi Liu <[email protected]>
Cc: Dave Young <[email protected]>
---
Changes:
  v1->v2: Update comment and commit message.
  v2->v3: Adjust maximum line length

 vmcore-dmesg/vmcore-dmesg.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
index f47ee11..0364636 100644
--- a/vmcore-dmesg/vmcore-dmesg.c
+++ b/vmcore-dmesg/vmcore-dmesg.c
@@ -540,6 +540,12 @@ static void dump_dmesg_legacy(int fd)
                exit(53);
        }
 
+       /*
+        * To collect full dmesg including the part before `dmesg -c` is useful
+        * for later debugging. Use same logic as what crash utility is using.
+        */
+       logged_chars = log_end < log_buf_len ? log_end : log_buf_len;
+
        write_to_stdout(buf + (log_buf_len -  logged_chars), logged_chars);
 }
 
-- 
2.4.3


_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to