Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp26394239rwd; Mon, 3 Jul 2023 09:05:33 -0700 (PDT) X-Google-Smtp-Source: APBJJlFI8JbPbLUo+RH15ApRTWc/wo+onbpwgIMwEIrvudJWF+L1AlVnbVDOQjXVotQ2YcHm4LIP X-Received: by 2002:a05:6a00:a1b:b0:64c:b45f:fc86 with SMTP id p27-20020a056a000a1b00b0064cb45ffc86mr11007777pfh.17.1688400333237; Mon, 03 Jul 2023 09:05:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688400333; cv=none; d=google.com; s=arc-20160816; b=P9A/jEC0ODqaHzJtTh5EgKHIn8bzRSkEGCdnBtA6/KmFxYnHMbadkVGO7BXAuElYIU HHMjRPfxdHRqHy0UAnyPeKA6aDvVO8I7WLMuL3zE9Qqn0zz+PQnK3L+cGhhIuBnA3PFd rnze1LP2UK76C2AT2EamKca+Yi7nhOkcDCKUcM5gf45V5ElchGcsfqtKb0HdziPgL/sA imAcEmn0aJJOv4ZthyA06Dv/8MrAlmJL9KdnN4ZVNfJRe4hTGyJDBv80I209MQHnDSuB fMgEQ831ftEQYMhdblVHUDxZZVlIF8MfGy1s9ylNXqkAZe5m6lC58HsgBG2M0ctu31A+ cokg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=esng/Li8TZp8uQexQ4Q5eaRcrM+Ti1P/FSD7RWq9dOI=; fh=2/97wRrTQEpaxC1VfqUClWa4UwAeiq7BkYSrKBPPq7w=; b=Jbxo4WKVdq8vec/V8JZuPjnNcZEHBdzRoLMcehB+u4AJ05iCBdkSZAL7nP/2QUNahw u1ehAxNcUVHALqT2a3dCusV/mjbEFxZ+CkvkmDffw/hvB5N7dlkXemQ4+nr1siFBFQUx Av9NqBgXTPzPq54xQj0LNg9Zdo8Fws3GHQFsp0NnJI44CXBcsKRvypBpitE2AoQpZNHy 6zqzTQ7MFn5G4B+0O6UJSmPDslglD+yBV4XqgpZQGBY/zdMxvERBLexp2EGRidxMzX3B jqh13o2pAdAPxxuZ6XX/fyMA2+VlE6cdlgM0RfUXxVgk0E2iCGKxDL/Lvq9X5ipU2CoQ h4/w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d22-20020aa78e56000000b0067adbac7ad6si13421199pfr.20.2023.07.03.09.05.18; Mon, 03 Jul 2023 09:05:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229750AbjGCPmI (ORCPT + 99 others); Mon, 3 Jul 2023 11:42:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229505AbjGCPmH (ORCPT ); Mon, 3 Jul 2023 11:42:07 -0400 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5398CD; Mon, 3 Jul 2023 08:42:05 -0700 (PDT) Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-311367a3e12so6134607f8f.2; Mon, 03 Jul 2023 08:42:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688398924; x=1690990924; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=esng/Li8TZp8uQexQ4Q5eaRcrM+Ti1P/FSD7RWq9dOI=; b=NKwv6DlkYJNksHn44kDcAyPMqNZfJhZbpdUQC08o9O9dXBOotMzoiZ9ppeG4UE2VKG GAZ6EQoxslPg/2Z+CR0+CuQqFUt4OEyDn3w/1szb9HKXl0biVj1dTNwc5wUl8LOqTnA8 OBUcb9DtxQsgWwFJKxALSRQK8mCYbrAskD4l3hnti4Xh+Pf5cko1QLWmLEF2zLXqpUoF B0Wy39W8z/GTvd9wgrh1cUrFnQgx9oOdB1lJy4KlDmZx9/N4YfZE3zq7QUjknnKOCIva lXUvLl/Z0rRk3jTg2LC8xMoIzT43Qj4Cij0Yt2e2fw6oSxTJ0lcTEAhgbZtvFoH3vUqB tQmg== X-Gm-Message-State: ABy/qLbKVukaaYKHiQydAtF1ix1Yc2l85OI0FgQEPUNySA5f7QsWFgbV oJRyWkfWKfckzcwjFdnhqzs= X-Received: by 2002:adf:f2cc:0:b0:314:824:3778 with SMTP id d12-20020adff2cc000000b0031408243778mr10063606wrp.22.1688398923844; Mon, 03 Jul 2023 08:42:03 -0700 (PDT) Received: from localhost (fwdproxy-cln-015.fbsv.net. [2a03:2880:31ff:f::face:b00c]) by smtp.gmail.com with ESMTPSA id m1-20020adffe41000000b003143853590csm2387293wrs.104.2023.07.03.08.42.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Jul 2023 08:42:03 -0700 (PDT) From: leitao@debian.org To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: sergey.senozhatsky@gmail.com, pmladek@suse.com, tj@kernel.or, Breno Leitao , Dave Jones , netdev@vger.kernel.org (open list:NETWORKING DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] netconsole: Append kernel version to message Date: Mon, 3 Jul 2023 08:41:54 -0700 Message-Id: <20230703154155.3460313-1-leitao@debian.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Breno Leitao Create a new netconsole Kconfig option that prepends the kernel version in the netconsole message. This is useful to map kernel messages to kernel version in a simple way, i.e., without checking somewhere which kernel version the host that sent the message is using. If this option is selected, then the ";" is prepended before the netconsole message. This is an example of a netcons output, with this feature enabled: 6.4.0-01762-ga1ba2ffe946e;12,426,112883998,-;this is a test Calvin Owens send a RFC about this problem in 2016[1], but his approach was a bit more intrusive, changing the printk subsystem. This approach is lighter, and just append the information in the last mile, just before netconsole push the message to netpoll. [1] Link: https://lore.kernel.org/all/51047c0f6e86abcb9ee13f60653b6946f8fcfc99.1463172791.git.calvinowens@fb.com/ Signed-off-by: Breno Leitao Cc: Dave Jones --- drivers/net/Kconfig | 10 ++++++++++ drivers/net/netconsole.c | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index d0a1ed216d15..df50fdb6c794 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -332,6 +332,16 @@ config NETCONSOLE_DYNAMIC at runtime through a userspace interface exported using configfs. See for details. +config NETCONSOLE_UNAME + bool "Add the kernel version to netconsole lines" + depends on NETCONSOLE + default n + help + This option causes extended netcons messages to be prepended with + kernel uname version. This can be useful for monitoring a large + deployment of servers, so, you can easily map outputs to kernel + versions. + config NETPOLL def_bool NETCONSOLE diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 4f4f79532c6c..7edc5b033e14 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -36,6 +36,7 @@ #include #include #include +#include MODULE_AUTHOR("Maintainer: Matt Mackall "); MODULE_DESCRIPTION("Console driver for network interfaces"); @@ -815,6 +816,38 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg, } } +#ifdef CONFIG_NETCONSOLE_UNAME +static void send_ext_msg_udp_uname(struct netconsole_target *nt, + const char *msg, unsigned int len) +{ + unsigned int newlen; + char *newmsg; + char *uname; + + uname = init_utsname()->release; + + newmsg = kasprintf(GFP_KERNEL, "%s;%s", uname, msg); + if (!newmsg) + /* In case of ENOMEM, just ignore this entry */ + return; + newlen = strlen(uname) + len + 1; + + send_ext_msg_udp(nt, newmsg, newlen); + + kfree(newmsg); +} +#endif + +static inline void send_msg_udp(struct netconsole_target *nt, + const char *msg, unsigned int len) +{ +#ifdef CONFIG_NETCONSOLE_UNAME + send_ext_msg_udp_uname(nt, msg, len); +#else + send_ext_msg_udp(nt, msg, len); +#endif +} + static void write_ext_msg(struct console *con, const char *msg, unsigned int len) { @@ -827,7 +860,7 @@ static void write_ext_msg(struct console *con, const char *msg, spin_lock_irqsave(&target_list_lock, flags); list_for_each_entry(nt, &target_list, list) if (nt->extended && nt->enabled && netif_running(nt->np.dev)) - send_ext_msg_udp(nt, msg, len); + send_msg_udp(nt, msg, len); spin_unlock_irqrestore(&target_list_lock, flags); } -- 2.34.1