Thread (18 messages) 18 messages, 2 authors, 2020-05-12

Re: [PATCH v8 01/11] pstore/zone: Introduce common layer to manage storage zones

From: WeiXiong Liao <hidden>
Date: 2020-05-12 05:47:55
Also in: lkml

hi Kees Cook,

On 2020/5/12 PM 1:15, Kees Cook wrote:
On Tue, May 12, 2020 at 11:55:20AM +0800, WeiXiong Liao wrote:
quoted
On 2020/5/12 AM 7:32, Kees Cook wrote:
quoted
[...]
+struct psz_context {
+	struct pstore_zone **kpszs;
+	unsigned int kmsg_max_cnt;
+	unsigned int kmsg_read_cnt;
+	unsigned int kmsg_write_cnt;
+	/*
+	 * These counters should be calculated during recovery.
+	 * It records the oops/panic times after crashes rather than boots.
+	 */
+	unsigned int oops_counter;
+	unsigned int panic_counter;
oops/panic_counter is designed to count the crash times since the
linux kernel was installed. pstore/zone lookup the max counter from all
valid kmsg zones when recovery and saves them to oops/panic_counter.
However, they are unable to get real number if we remove files. It's
not serious, we can fix it after this series.
Since the kernel was installed? I don't see a kernel version check in
here? Or do you mean "since ever", in that it's a rolling count?
Yes, "since ever".
quoted
And since pstore supports "max_reason", should pstore/zone count for
other reason?
For now, no. I opted to try to keep this as simple as possible a port
from dump_oops to max_reason for now.
OK.
quoted
quoted
+static inline int psz_kmsg_erase(struct psz_context *cxt,
+		struct pstore_zone *zone, struct pstore_record *record)
+{
+	struct psz_buffer *buffer = zone->buffer;
+	struct psz_kmsg_header *hdr =
+		(struct psz_kmsg_header *)buffer->data;
+
+	if (unlikely(!psz_ok(zone)))
+		return 0;
+	/* this zone is already updated, no need to erase */
+	if (record->count != hdr->counter)
+		return 0;
These codes is to fix bug that user remove files on pstore filesystem
but kmsg zone is already updated and pstore/zone should not erase
zone. It work for oops and panic because the count number is increasing.
However, it's useless for other reason of kmsg. We can fix it after this
series.
Okay, sounds good.
-- 
WeiXiong Liao
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help