This is the core patch for this whole patchset. Add support for including the current task's name in netconsole's extra data output. This adds a new append_taskname() function that writes the task name (from current->comm) into the target's extradata buffer, similar to how CPU numbers are handled.
The task name is included when the SYSDATA_TASKNAME field is set, appearing in the format "taskname=<name>" in the output. This additional context can help with debugging by showing which task generated each console message.
Signed-off-by: Breno Leitao leitao@debian.org --- drivers/net/netconsole.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 5a29144ae37ee7b487b1a252b0f2ce8574f9cefa..625f4c0be11d8deb454139b1c526abc842697219 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1179,12 +1179,22 @@ static int append_cpu_nr(struct netconsole_target *nt, int offset) raw_smp_processor_id()); }
+static int append_taskname(struct netconsole_target *nt, int offset) +{ + if (WARN_ON_ONCE(!current)) + return 0; + + return scnprintf(&nt->extradata_complete[offset], + MAX_EXTRADATA_ENTRY_LEN, " taskname=%s\n", + current->comm); +} /* * prepare_extradata - append sysdata at extradata_complete in runtime * @nt: target to send message to */ static int prepare_extradata(struct netconsole_target *nt) { + u32 fields = SYSDATA_CPU_NR | SYSDATA_TASKNAME; int extradata_len;
/* userdata was appended when configfs write helper was called @@ -1192,11 +1202,13 @@ static int prepare_extradata(struct netconsole_target *nt) */ extradata_len = nt->userdata_length;
- if (!(nt->sysdata_fields & SYSDATA_CPU_NR)) + if (!(nt->sysdata_fields & fields)) goto out;
if (nt->sysdata_fields & SYSDATA_CPU_NR) extradata_len += append_cpu_nr(nt, nt->userdata_length); + if (nt->sysdata_fields & SYSDATA_TASKNAME) + extradata_len += append_taskname(nt, extradata_len);
WARN_ON_ONCE(extradata_len > MAX_EXTRADATA_ENTRY_LEN * MAX_EXTRADATA_ITEMS);