From nobody Thu Dec 18 06:16:04 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFFCB20C00B; Mon, 12 May 2025 02:49:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018187; cv=none; b=ls+60tT6g5l5tsqf7Q1hTKCWBQadIpmtiU4+HMq735KxNWHbsxKDEwAHtjPCkBOWl+9Il9IofNIY3jb/x5wWnx2FPXyvdB/XdPkGhhJn5Xw/Ih+IxvDjZ0I3xeKrZypKypkjHLV+v8VwEEvQHRsaLdmh8kimEKMv1dc0hXB/hlo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018187; c=relaxed/simple; bh=bGoIp65pg/jPGkK8GR9O0A+GZrnrbxBDUI1wzJAXPLs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YosNcZuiNULrZWpmrieN/Ur3CNy77D0v6wylaScfeTv9CUdemBylxs+BuU8VWgHsaLY0xXFws8kOP3wcZ2L81pGxkzzXW7UZ0Bc62O7ZfjHKfWvCo3y2dCzZejHDKK+JxFTEZx8KdP61KZoZ/i8W6CVI+y/IY6S2PGZbnqG4t60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K1uNq7aG; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K1uNq7aG" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-73712952e1cso3749200b3a.1; Sun, 11 May 2025 19:49:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747018185; x=1747622985; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oAgDSdrNCjR7M0F+IDPRCBxlQPpiR4RIsUl7gCVqBBA=; b=K1uNq7aGisD1Tpwy8rZH9qpb8rnjVUMoQvcYC84dDEAThOgQbfKsIDBiZGmSt95hqY /x2l3c/iN8oKMKuJ4HiR84EgZHFoDmdZfQbJYln86Y6ZekPqBYfRvL6BByzXL/k1lobp i46eSdKT1to6p5jp5V5yZ+4Shc/R5gzG8bQYZM/3qb3iwPDTuaBqiwsAKPIRS2y2EVsc HBX8bf5lIf5kVUltRpyMAEgS75RSpQAtDK6nhdk2RhVRG84R0ZiRoGv05alWi02+iD/5 9FENq++astzOooPd1E3cJ2ZeGzBMbvoeVIbTQDVwojTt/t72+9ddaW5vmje4dFqJeX0g KM9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747018185; x=1747622985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oAgDSdrNCjR7M0F+IDPRCBxlQPpiR4RIsUl7gCVqBBA=; b=I4rPj3UXna475IBJulMPPv+sqbU1mVEgs6AsrR0XhR+/62ayLgE7QL5iFisreKxUyD T4yA9/mcNlRAqdAcWeXdCzCYxGyKFllewnhNeajglemT21xGX1heTlFwVaAPPnnq/9Kl qPJjQMARMckKXnqMhk9Ootuqr/wk4NFD7ENQlzT4QTjUsufdtndTVW+kr5JidQ3PQhHv 0uc30P4DUypPUmhHtDe5b/hoSeq5h8c07xDoWOvhhvsfF9ulz2pN56Vn7NKSTJNFW7Nm famHtJH8utzU2vojwBrVrGKQPn8PCXHNEClWMuYdK91tnGB6G+5UObb4kSNCrERBIaFe mXZQ== X-Forwarded-Encrypted: i=1; AJvYcCWGk0W0X5fsKnIdpjH0OQ6W2eF0JJqJkNYOpZktXJGZhmR2ZfrO9yHh+LBVpaknQvwrBTAWO8dlUmTpng==@vger.kernel.org, AJvYcCXF3hPa/LSL3jeLm4/yzqhbbGewvT6kuZTl9Phh0/6vZFPhxjR1VFGA2PqQmte6G8SrCkkz+ch1bB9FoZvkdPx/turZ@vger.kernel.org X-Gm-Message-State: AOJu0YzVqD965TNyPpoIk6pYTQPbnBU9QcoUfpdo/nmCtmo8mUsohYSa Eay5S8MxYE3QY9+HfSYo+YvH2kRniJiV0SNjFfNCmT4BEtBHRYiKE1DJN+lI X-Gm-Gg: ASbGncv5jg97dzcOPKf6Qz0qC/rfQpYMu6vsqbE0SWkvrxBfTpkFlt+iV47wjOYHysU oQJ0Vmhgle1NrHr4PuIZEYAbfgJXpcOAV+MZA7SrvZqUim/636lygc5HJUumq3n08E+Tnm1QXbG n+Dgucpfj3DXh8xsoHgi23DOJ5eDrl237QaLsmjFPRNuT/Emns3WEAD7CMZdQ3S6n2ng6+0I8Kg TrsNIqFUrgFFuDOi/SmPxkvp3yNFgQzFHRy0E92Qd+Zz3lxEho6XRoMqmeuAVwQzMnBzZ/PmD+6 8oFie9ZOoS/YwKqkSPloDby4X6/Thf8Zts5y8NrVpzpA5s3n1I7VLOyXsq/Ow4u8fLjRjvoUNjr aepk4Qm1pbXVruvDlaV8iQaM= X-Google-Smtp-Source: AGHT+IF2pD/3WNehgQKRqb0NRE5telzzjqJbi/MWknVHnDbyv7BiB1CTonFFm41CEv+bBKH2hbbQGQ== X-Received: by 2002:a05:6a20:7fa4:b0:1f5:8622:5ecb with SMTP id adf61e73a8af0-215abc17ab1mr19142427637.34.1747018185136; Sun, 11 May 2025 19:49:45 -0700 (PDT) Received: from KERNELXING-MB0.tencent.com ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b234af2c287sm3938761a12.41.2025.05.11.19.49.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 May 2025 19:49:44 -0700 (PDT) From: Jason Xing To: axboe@kernel.dk, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Jason Xing , Yushan Zhou Subject: [PATCH v1 1/5] relayfs: support a counter tracking if per-cpu buffers is full Date: Mon, 12 May 2025 10:49:31 +0800 Message-Id: <20250512024935.64704-2-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20250512024935.64704-1-kerneljasonxing@gmail.com> References: <20250512024935.64704-1-kerneljasonxing@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing Add 'full' field in per-cpu buffer structure to detect if the buffer is full, which means: 1) relayfs doesn't intend to accept new data in non-overwrite mode that is also by default, or 2) relayfs is going to start over again and overwrite old unread data when kernel module has its own subbuf_start callback to support overwrite mode. This counter works for both overwrite and non-overwrite modes. This counter doesn't have any explicit lock to protect from being modified by different threads at the same time for the better performance consideration. In terms of the atomic operation, it's not introduced for incrementing the counter like blktrace because side effect may arise when multiple threads access the counter simultaneously on the machine equipped with many cpus, say, more than 200. As we can see in relay_write() and __relay_write(), the writer at the beginning should consider how to use the lock for the whole write process, thus it's not necessary to add another lock to make sure the counter is accurate. Using 'pahole --hex -C rchan_buf vmlinux' so you can see this field just fits into one 4-byte hole in the cacheline 2. Reviewed-by: Yushan Zhou Signed-off-by: Jason Xing --- include/linux/relay.h | 9 +++++++++ kernel/relay.c | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/linux/relay.h b/include/linux/relay.h index f80b0eb1e905..022cf11e5a92 100644 --- a/include/linux/relay.h +++ b/include/linux/relay.h @@ -28,6 +28,14 @@ */ #define RELAYFS_CHANNEL_VERSION 7 =20 +/* + * Relay buffer error statistics dump + */ +struct rchan_buf_error_stats +{ + unsigned int full; /* counter for buffer full */ +}; + /* * Per-cpu relay channel buffer */ @@ -43,6 +51,7 @@ struct rchan_buf struct irq_work wakeup_work; /* reader wakeup */ struct dentry *dentry; /* channel file dentry */ struct kref kref; /* channel buffer refcount */ + struct rchan_buf_error_stats stats; /* error stats */ struct page **page_array; /* array of current buffer pages */ unsigned int page_count; /* number of current buffer pages */ unsigned int finalized; /* buffer has been finalized */ diff --git a/kernel/relay.c b/kernel/relay.c index 5aeb9226e238..b5db4aa60da1 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -252,8 +252,13 @@ EXPORT_SYMBOL_GPL(relay_buf_full); static int relay_subbuf_start(struct rchan_buf *buf, void *subbuf, void *prev_subbuf) { + int buf_full =3D relay_buf_full(buf); + + if (buf_full) + buf->stats.full++; + if (!buf->chan->cb->subbuf_start) - return !relay_buf_full(buf); + return !buf_full; =20 return buf->chan->cb->subbuf_start(buf, subbuf, prev_subbuf); @@ -298,6 +303,7 @@ static void __relay_reset(struct rchan_buf *buf, unsign= ed int init) buf->finalized =3D 0; buf->data =3D buf->start; buf->offset =3D 0; + buf->stats.full =3D 0; =20 for (i =3D 0; i < buf->chan->n_subbufs; i++) buf->padding[i] =3D 0; --=20 2.43.5 From nobody Thu Dec 18 06:16:04 2025 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EADF924A06C; Mon, 12 May 2025 02:49:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018190; cv=none; b=j34/BA5e8Y3as1xgj5Z68EkJAlZPVtaMPaok8kdsuVTTPkLf+Gm5fAUOPCp5+/mrNoKJOp9zQrhMw2OQwuBfkoAsnKJ+lmbNfUzqyR5AyKnMilVditCVhXT8p1Zh0fm7vjq0WxwX514OWR1OQ9P7QTsKcW5vvWNuNLIKs4iRG5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018190; c=relaxed/simple; bh=fA6uYb+HYMswsWxeRu8N7UkfiZFXVi5+QE26hPaat58=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Msqa7aLz+CyPAGs8/b5G4ghjq0kEOtIQRX+6JEnuXfTicBd8xHDg4MrdBRfcHIQqSyYX22VG4fe5iBePySPWdoUTFptijQv3AG8grnPV/Ik+yWf0xdQeoxvt1iUSMt82mBrb1x9c7CxOQfkl0R1mzFMR74gRuJsmtpxpTpgoVWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JOcmQFaT; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JOcmQFaT" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-30ac268a8e0so3715411a91.0; Sun, 11 May 2025 19:49:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747018188; x=1747622988; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RdC7+50ea9TIOTR9LDnaVPHr54N1c7Zvh2HZXjranp0=; b=JOcmQFaT8AjWg2Okq4lpaPkjm9H2UIcBrPlYHPT2DeRL8i5YMGgGOMmg5UxTvQSssT dqeRWrqbdT9xzPw/dicpQZwSAjafILZ8J44kHRq7nEJT/srxl9DcIeL9kQ7TexyGEkIx 2DEckOy3vJAw4ubk+kmweBytoxdl65MHhFVc/8x7uY+L/eIHlm/XAjTpqYA7jlxDgh5I 47D8Q1tTZr7n7SjAUkN8tkeW5xFxaMcBOs+a5dTzU+VOGAbN85bcwovC2gUpg2wVOzlm NpiyhrekR2bf/7RvyzRSYho82Lklet0KQ7+JnjBt/IJjHTJ9fVAv0ro8KyzNRPneDA4z heqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747018188; x=1747622988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RdC7+50ea9TIOTR9LDnaVPHr54N1c7Zvh2HZXjranp0=; b=oM/vCQjmhlAA12NvB+YARmKL0lZIL7Ag2dM3DLIzYVLW3uOIJG9veDOiIXa8q1iHc8 bMrfB79rw10I7471CBf0Ywvkuf6rBjE2rdvCojx3eXLg/Q5YydtdgwBjiXNqQ/yVW+W9 k9bOWRSRnMNXP4VErIN3JqECEZsf4RPKY/R7Vi+xC2GKJzwRyJPtNycxRRXk0zjiJDWl Y18F6blffA29qkyi9wgb+4xyJmRO3ylCSu4wQCCDkBj4//HPmgcQ/QzkgLrtgh1qaDO/ /JgdMLyb/hUl8sG8FxAm2vZeaX8s7/fbz5hWhv4GICtP2Nplsh1YkhwY2Dd1dtJXNtd1 rrcw== X-Forwarded-Encrypted: i=1; AJvYcCUY/+v3e5m+NE2NMgwMkZoCrLrHUD/YuHW0lvIiKZCwmDK+48+XznBT+ib7KbU/LsfutqreoCZN/l+IDA==@vger.kernel.org, AJvYcCWh9i93CARbjzRVztl7SHvkiRbiVbzWaiPKCeKCmlfpvccb5PYr5AGo8eaBgxaIicgPIlSEzxDSt8eImx8A5DxUC3Rm@vger.kernel.org X-Gm-Message-State: AOJu0YxFbnOGxeJvEPdfI48+9prsurYSv1ZVyhi5PAMSz+MYhwZxLn3M jJVgOleclRcvJk2tQvJrgmw5b7UOTH8/wr/SbrOa5I6YMYZi7D+7 X-Gm-Gg: ASbGncvetXEUIAszPta5bCdzn1l1D18r+QPlJSRsne6FZ18ppGxzwVm6sDnKRY5hm8C GyCLACtRqUp9pY1/POD4pEYjlc9Axfj3h2LwF9xH+R+CqRGZJs9yTEUbINocKsn9GT/VaM/KOv/ KlfaJzr+X2JokhfubLheytWiQ7DBQ/1/KG1djEQxJoKERHm4mrfU2zjKivszvHJpQ69wmctuj5G wc9s5bjhw6eHiRsJKv2eOJezFgzoCvoU6f++sJ1F5H3f3W5VWTf97nsP2f3Mc8OPW6T4Lrni67O px+DJmWcSOeJ7GQXVyIjrI88M8tbwvzxdsuNDH6AX11BLe73NB26Ow6IiTSFpFEJ+NruQPZQ4B8 1OiyQFAC5M+0qkJPRP5HYbSw= X-Google-Smtp-Source: AGHT+IEuCbE/fWTwMzhtQWYiP9Xt6EE1kBOowFD1v8jevbAVJQTUuOfx3NVHBGeE0t+E+flU9XvkTg== X-Received: by 2002:a17:90b:3805:b0:2ee:5c9b:35c0 with SMTP id 98e67ed59e1d1-30c3fc08554mr15488424a91.9.1747018188092; Sun, 11 May 2025 19:49:48 -0700 (PDT) Received: from KERNELXING-MB0.tencent.com ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b234af2c287sm3938761a12.41.2025.05.11.19.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 May 2025 19:49:47 -0700 (PDT) From: Jason Xing To: axboe@kernel.dk, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Jason Xing , Yushan Zhou Subject: [PATCH v1 2/5] relayfs: introduce dump of relayfs statistics function Date: Mon, 12 May 2025 10:49:32 +0800 Message-Id: <20250512024935.64704-3-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20250512024935.64704-1-kerneljasonxing@gmail.com> References: <20250512024935.64704-1-kerneljasonxing@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing In this version, only support dumping the counter for buffer full and implement the framework of how it works. Users MUST pass a valid @buf with a valid @len that is required to be larger than RELAY_DUMP_BUF_MAX_LEN to acquire which information indicated by @flags to dump. RELAY_DUMP_BUF_MAX_LEN shows the maximum len of the buffer if users choose to dump all the values. Users can use this buffer to do whatever they expect in their own kernel module, say, print to console/dmesg or write them into the relay buffer. Reviewed-by: Yushan Zhou Signed-off-by: Jason Xing --- include/linux/relay.h | 10 ++++++++++ kernel/relay.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/include/linux/relay.h b/include/linux/relay.h index 022cf11e5a92..7a442c4cbead 100644 --- a/include/linux/relay.h +++ b/include/linux/relay.h @@ -31,6 +31,15 @@ /* * Relay buffer error statistics dump */ +enum { + RELAY_DUMP_BUF_FULL =3D (1 << 0), + + RELAY_DUMP_LAST =3D RELAY_DUMP_BUF_FULL, + RELAY_DUMP_MASK =3D (RELAY_DUMP_LAST - 1) | RELAY_DUMP_LAST +}; + +#define RELAY_DUMP_BUF_MAX_LEN 32 + struct rchan_buf_error_stats { unsigned int full; /* counter for buffer full */ @@ -170,6 +179,7 @@ extern int relay_late_setup_files(struct rchan *chan, struct dentry *parent); extern void relay_close(struct rchan *chan); extern void relay_flush(struct rchan *chan); +extern void relay_dump(struct rchan *chan, char *buf, int len, int flags); extern void relay_subbufs_consumed(struct rchan *chan, unsigned int cpu, size_t consumed); diff --git a/kernel/relay.c b/kernel/relay.c index b5db4aa60da1..0e675a77285c 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -810,6 +810,41 @@ void relay_flush(struct rchan *chan) } EXPORT_SYMBOL_GPL(relay_flush); =20 +/** + * relay_dump - dump statistics of the specified channel buffer + * @chan: the channel + * @buf: buf to store statistics + * @len: len of buf to check + * @flags: select particular information to dump + */ +void relay_dump(struct rchan *chan, char *buf, int len, int flags) +{ + unsigned int i, full_counter =3D 0; + struct rchan_buf *rbuf; + int offset =3D 0; + + if (!chan || !buf || flags & ~RELAY_DUMP_MASK) + return; + + if (len < RELAY_DUMP_BUF_MAX_LEN) + return; + + if (chan->is_global) { + rbuf =3D *per_cpu_ptr(chan->buf, 0); + full_counter =3D rbuf->stats.full; + } else { + for_each_possible_cpu(i) { + if ((rbuf =3D *per_cpu_ptr(chan->buf, i))) + full_counter +=3D rbuf->stats.full; + } + + if (flags & RELAY_DUMP_BUF_FULL) + offset +=3D snprintf(buf, sizeof(unsigned int), "%u", full_counter); + + snprintf(buf + offset, 1, "\n"); +} +EXPORT_SYMBOL_GPL(relay_dump); + /** * relay_file_open - open file op for relay files * @inode: the inode --=20 2.43.5 From nobody Thu Dec 18 06:16:04 2025 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E651624C079; Mon, 12 May 2025 02:49:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018193; cv=none; b=Dlvy4GE3yW31g6j7o7VwWdPCRb7qLmG85rOfwv92WYzvLn6I+vGZ5H/Vqj49o1jhfxmrUi71q6w7Kaa4+C69519ufRk3GEZlOdScgC7ggPTlR2TI5cPBIm4SRcgrFXQMMOUJNjJ63bHM6UMuJbT9knkU2FgFLMhF4D+OmHqyzBQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018193; c=relaxed/simple; bh=jt8mz/LIeqRGvCoOHtTSkpLfQQkOGg13bmuG1diMBwQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FBpzHS27OdR7wUb3pAIurPzuC7Qz0XeDNhtDzT8H31SWwctkKj58RuwBmrlPRzrcsv0Ev8JI/+SNLDnJYSqrUNGx/ixBnDoxrk3fNWUgZw+7eyS7Ob6jksyy4ZZXwNCXvWXG8zXNLCob7dAmqIH/F6lctFALj8KQ3IoSFxpufzg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k9t1w7tR; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k9t1w7tR" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-30abb2d5663so3847010a91.2; Sun, 11 May 2025 19:49:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747018191; x=1747622991; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QN9dQhzLwM+Yz6+OcH81L0tELj+gC9AsU7SNrehA9n0=; b=k9t1w7tRrfEqbdK8RlVBbczf2m0E1jFCs7goZIbcOWMQblRHllxMm3wGfDmWJX2hXD l4kgvMECZSSDs97/clQ/n9+FaeTyfpLVMqnd7Mc8s1+ENj7qZEmfPnBaLmaYsoa67A4U pMC8pcjJLq5p2Zl0dVJ1tvkGOV1WEEYOBAT8FxVYOF496S2rGoMc1MEn/H6G0zNgiy2o oK960dgkkgXIgWLLg2RNbDlJycRkhmbfEmWhimolK+5V58yO0Z1LSrQ/bo0z9v6PcJQT 70WNd/gv6WLOS2Pxq8ad+xXUr8npsbLcgJ5SWHeJ7o5lyY4F1OdUsqMWYzdJKJiqGy6d Q6Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747018191; x=1747622991; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QN9dQhzLwM+Yz6+OcH81L0tELj+gC9AsU7SNrehA9n0=; b=g3tmdLLi44yRwV0B0TevU/3bzY5uaNF9dEQlTf5gEqUWzEubwt/VhoHgbxDMwXQjR6 6T6aAke+IZmKat42pBCcPXIvYqJT9cDypdgg2dfkVxFZpJoivuzxpKj7Rm1gBG0uBYVJ 4IAZNzBwJFxk6LSV0m3nV8BupsoG4PfkMmtntT4SETs7Kx0n/JwueWHLD51KhpOfWPOj jeSyEuzSFDpcq0iN8hOXTJeId9vZ0rFBtw/hCSTu1UanPIiHB6dvVrvI1EqPjHQPvMpS lz1bFR1p33SCa6UIRudnxCmZiVl4Dy5bZ9Yub1f+u9/ny7Z29iV/9LwbKewYbyptifHJ IWKQ== X-Forwarded-Encrypted: i=1; AJvYcCXDhXPlxAWoVsu95ZiXC3BQEQff+Wc+x38tvEIGoB1H8wkZdBIccGhFQN0rJ+G0AW5p/7Ofnbnvp+Uh+g==@vger.kernel.org, AJvYcCXqXRK7ITZop+dyy4qJ+OE4ZeWAghAfsr1ZKvZuoI3CQcw/JLQ5UF4WeGyg5vhZV/ok9AzFq+W2cvsyvp6L/lCS1Cqx@vger.kernel.org X-Gm-Message-State: AOJu0Yz6UJFynV1b80NznwyHBw8Mx4G2VHkCJ1TExtuPrHq6TWGzDyBH otQuqJBv6q3V/1m7cDmLMT+aP0gGW+colzYzhCGcpyKb1srnjTb8 X-Gm-Gg: ASbGncvKuPA4fXtkrzRXTEhRYAyvVtFUg8ZkZTlszTl5I6faYbbPK8Am6otioVpnmoB NSVEvwFEEdIoFbYsUPqy0yDLc1DeLw9KQ2hbSnG0YOjrmQooSl93xTQh0LOAJEW62Sw8rupYNXH sH7fYTLFfbFuPplCL8N/isd5DdQpI6Y7FU/YHJ0CoH6vs3drowlzRVW/PQMEPkSs7IMT7DmqH2k mrKqnRv9WyJMnBPJmbgyPzq0VbSsH2VtgE/oPvXfBr8JI2mSo3UbQFzLYm40ANXP9D27j8zQh4j M1DaNwTR5knl7JWYQOOwSk/B+zTTdzPVe4uVkgVzrMPCm2qIu3f8gJPzTpCnUcx+xroWtH4x9ZE 6sDdbbDIGeNFJdUKYGXdGwro= X-Google-Smtp-Source: AGHT+IEIEObMTQTvXSOyvDjt/MLwZV0MY84O4o1a9TA0eyEKAH8W6OJsN+rRuimiKIw7u+busrns6g== X-Received: by 2002:a17:90b:28ce:b0:2f6:dcc9:38e0 with SMTP id 98e67ed59e1d1-30c3b91025amr22737353a91.0.1747018191041; Sun, 11 May 2025 19:49:51 -0700 (PDT) Received: from KERNELXING-MB0.tencent.com ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b234af2c287sm3938761a12.41.2025.05.11.19.49.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 May 2025 19:49:50 -0700 (PDT) From: Jason Xing To: axboe@kernel.dk, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Jason Xing , Yushan Zhou Subject: [PATCH v1 3/5] blktrace: use rbuf->stats.full as a drop indicator in relayfs Date: Mon, 12 May 2025 10:49:33 +0800 Message-Id: <20250512024935.64704-4-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20250512024935.64704-1-kerneljasonxing@gmail.com> References: <20250512024935.64704-1-kerneljasonxing@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing Replace internal subbuf_start with the default policy in relayfs. Remove dropped field from struct blk_trace. Correspondingly, use per-cpu buffer mechanism to replace atomic operation. Through incrementing full counter to keep track of how many times we encountered a full subbuffer, it aids the user space app in telling how many lost events there were. Sum up all the fields gathered from all cpus when application is reading. Reviewed-by: Yushan Zhou Signed-off-by: Jason Xing --- kernel/trace/blktrace.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index d1a89714e805..09d42c40ac9f 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -415,9 +415,9 @@ static ssize_t blk_dropped_read(struct file *filp, char= __user *buffer, size_t count, loff_t *ppos) { struct blk_trace *bt =3D filp->private_data; - char buf[16]; + char buf[RELAY_DUMP_BUF_MAX_LEN]; =20 - snprintf(buf, sizeof(buf), "%u\n", atomic_read(&bt->dropped)); + relay_dump(bt->rchan, buf, RELAY_DUMP_BUF_MAX_LEN, RELAY_DUMP_BUF_FULL); =20 return simple_read_from_buffer(buffer, count, ppos, buf, strlen(buf)); } @@ -456,23 +456,6 @@ static const struct file_operations blk_msg_fops =3D { .llseek =3D noop_llseek, }; =20 -/* - * Keep track of how many times we encountered a full subbuffer, to aid - * the user space app in telling how many lost events there were. - */ -static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf, - void *prev_subbuf) -{ - struct blk_trace *bt; - - if (!relay_buf_full(buf)) - return 1; - - bt =3D buf->chan->private_data; - atomic_inc(&bt->dropped); - return 0; -} - static int blk_remove_buf_file_callback(struct dentry *dentry) { debugfs_remove(dentry); @@ -491,7 +474,6 @@ static struct dentry *blk_create_buf_file_callback(cons= t char *filename, } =20 static const struct rchan_callbacks blk_relay_callbacks =3D { - .subbuf_start =3D blk_subbuf_start_callback, .create_buf_file =3D blk_create_buf_file_callback, .remove_buf_file =3D blk_remove_buf_file_callback, }; @@ -580,7 +562,6 @@ static int do_blk_trace_setup(struct request_queue *q, = char *name, dev_t dev, } =20 bt->dev =3D dev; - atomic_set(&bt->dropped, 0); INIT_LIST_HEAD(&bt->running_list); =20 ret =3D -EIO; --=20 2.43.5 From nobody Thu Dec 18 06:16:04 2025 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5DFE24E01D; Mon, 12 May 2025 02:49:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018196; cv=none; b=b4Re2t6J0JmmgNc5CdcrvvHTd8tn69xLYeovE4j/Y1h5bRUGpqcWBOeUnd0GZKwJZbzRIKASU970rft+lbb6c+anLFQZeyYkIOTSX00sBv/jnRDxVbmk9E9NUDGwuu7Sbf2sbNWIDh8UWoi+VZm6R3FnQBPYcQG4vvc4/Hll4A8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018196; c=relaxed/simple; bh=O1EXH+l1ID26lSZ86I0mvDbHzUMWrsHZJtxcXeDMpqA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=D1mnrsJ5VZdKGqYHOrGRkr/0nv0lYVwt7NszogDz9icGo1Oc0MpHaig2u8+DsB0uVR9Ok6e25N63mfT9As5GlG16Qw/pO7LWYU1ty6B+Mk2hcPfRxATn1I+cT/iYnpZFpEF9kIzAOK5vhNlM+7wlcieg3AX5ftvnRm7dvIu0fGE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BZyDICHj; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BZyDICHj" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-30c47918d84so2375773a91.3; Sun, 11 May 2025 19:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747018194; x=1747622994; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mS6PUiD9waxM/dvO4DQO9mPdxsKh+3Ov1Y+KBYunw0A=; b=BZyDICHjo6OdEFUkyX5ONX8uBvL55TVW+EW1v3/tUlWPnwSHXx9jhgg3zpD/CdS87y Mwt4k5hDhwH+r6ghdu/d+a1axgVkjJFCEbIowDJM2zlWBfgy9qirbRtaIavjg5Qi9fQe h1ykjJyRja5vxJfyWIK4ZbpNhbnZwKJ13rv8Pq+lZhWCWmsigSKPILOpGoasti+M0Hfe UvMLqaFlBVvqKDtaP7ZatdrqC0DAQhIOGPFv91CUBTyoRXU7wYvTaL5Njd3En8/fGH7s TCg7mepVRe+HuyxiaMwRpbbdomluhiAif6fKmphvhc1HThFqSNzCI6PdmAeJmQJ7ja8P avrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747018194; x=1747622994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mS6PUiD9waxM/dvO4DQO9mPdxsKh+3Ov1Y+KBYunw0A=; b=Udv8QSh5fMrMO6HGVy45DvQjAOjRId3+26WmCLOJAmbO5m1U+MkHeHL7YWOfuS7Jxh PhSzH99BaKZgklnL69xyeUWXOwsMHSNLJfbc3J/6dgzsZDGhXGg3prpKxjc8JW5c0Qd/ r2PYL/kJBFkjrn72QQlsEegzLoCg1/EoS1r23am0zhqcruXTZpyFTJtzn7ny0WJN1PBs 9RUDksIpCVwLBY1PZK0qBpihuXcWrL1DMhoPeLuFApJExWEMryoQSAHXKPzt8aJO0kjr 3ifcovC8vH//2BVtLdphpYl8feBARAVC9RZQ1GCnEmP3q1GTUIwKpSvuEjx6e0Q/E5TG sYQQ== X-Forwarded-Encrypted: i=1; AJvYcCV0b4wNFwSj3mdiY6BFxG9kmuv+DCKLpFVEmDTlG5Sn6YBu9g2zrQ0og7XxWJUYq/Jg6VgPmrBm7ut5ng==@vger.kernel.org, AJvYcCXhr2BEL3FyfLH1Cm2ErBLB2cTJ9zm5uztJJAud/x9rCLuW/ilplXmGubHDhvgQOKfH51h4fz4oHWekMj5D1u+JeG8D@vger.kernel.org X-Gm-Message-State: AOJu0Yy7TCfNi8pwXtzqjtGz5zDGg1LWmuv6FwcJDzRlJ0jLHp+nqHhr jnHQ66yN77NBjLPM7l5azDouk0LH2JMKpCGIxVDDCMMsKjKZYfqB X-Gm-Gg: ASbGncvg2YVzyZpCvDowivmLCeyb2FaqeGjcfAyN6efoEosD/uRsgdbW9WXh/kEApRv +FLBMRQJxsVttvP67P086qJW0lCsbIaCbhi9WDDEZPME4/XUXHFTJf/pzbFk0Hl1WRbz/mzFfrP 4F6YXn+znmrVUiVYdZp6wuhiakRNuEPWvOOho6vz7Eu9wqWxXzmJtcuSK/wYKpG7ujzzNealB/y pqM1KUDz2XsRAZk3iG7hqkMuAhMtJNc2FzbisMYb8rwmoadlwuh3WUaU+paGUvzxiCBycHrn/6p 5xv6PvQlcJw/If2zfz/RLf5lIOJon85AjFxizb0jHWlRlUDJps/AIqGKD3vECOT7e8ywmlkGZnS q3iCSmSluLHYNbptsr4ym55U= X-Google-Smtp-Source: AGHT+IGA0zyFbcpHHaKTnaWWOHklp6y67rFn7VGo74DPABBPXABJMpelZJxIekOVWdWin2jO2bcjgA== X-Received: by 2002:a17:90b:35d0:b0:2ee:693e:ed7a with SMTP id 98e67ed59e1d1-30c3d65cc3cmr16994555a91.35.1747018194025; Sun, 11 May 2025 19:49:54 -0700 (PDT) Received: from KERNELXING-MB0.tencent.com ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b234af2c287sm3938761a12.41.2025.05.11.19.49.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 May 2025 19:49:53 -0700 (PDT) From: Jason Xing To: axboe@kernel.dk, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Jason Xing , Yushan Zhou Subject: [PATCH v1 4/5] relayfs: support a counter tracking if data is too big to write Date: Mon, 12 May 2025 10:49:34 +0800 Message-Id: <20250512024935.64704-5-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20250512024935.64704-1-kerneljasonxing@gmail.com> References: <20250512024935.64704-1-kerneljasonxing@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing It doesn't really matter to let the user/admin know what the last too big value is. Just record how many times this case is triggered. Also solve the issue where relay_reset() doesn't restore the value. Store the counter in the per-cpu buffer structure instead of the global buffer structure. It also solves the previous racy condition because in terms of the global structure, it is likely to happen when a few of per-cpu buffers encounter the too big data case. Remove the printk in relay_close() since kernel module can directly call relay_dump() as they want. Reviewed-by: Yushan Zhou Signed-off-by: Jason Xing --- include/linux/relay.h | 5 +++-- kernel/relay.c | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/include/linux/relay.h b/include/linux/relay.h index 7a442c4cbead..0f5f6ff17824 100644 --- a/include/linux/relay.h +++ b/include/linux/relay.h @@ -33,8 +33,9 @@ */ enum { RELAY_DUMP_BUF_FULL =3D (1 << 0), + RELAY_DUMP_WRT_BIG =3D (1 << 1), =20 - RELAY_DUMP_LAST =3D RELAY_DUMP_BUF_FULL, + RELAY_DUMP_LAST =3D RELAY_DUMP_WRT_BIG, RELAY_DUMP_MASK =3D (RELAY_DUMP_LAST - 1) | RELAY_DUMP_LAST }; =20 @@ -43,6 +44,7 @@ enum { struct rchan_buf_error_stats { unsigned int full; /* counter for buffer full */ + unsigned int big; /* counter for too big to write */ }; =20 /* @@ -82,7 +84,6 @@ struct rchan const struct rchan_callbacks *cb; /* client callbacks */ struct kref kref; /* channel refcount */ void *private_data; /* for user-defined data */ - size_t last_toobig; /* tried to log event > subbuf size */ struct rchan_buf * __percpu *buf; /* per-cpu channel buffers */ int is_global; /* One global buffer ? */ struct list_head list; /* for channel list */ diff --git a/kernel/relay.c b/kernel/relay.c index 0e675a77285c..27f7e701724f 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -304,6 +304,7 @@ static void __relay_reset(struct rchan_buf *buf, unsign= ed int init) buf->data =3D buf->start; buf->offset =3D 0; buf->stats.full =3D 0; + buf->stats.big =3D 0; =20 for (i =3D 0; i < buf->chan->n_subbufs; i++) buf->padding[i] =3D 0; @@ -712,7 +713,7 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_= t length) return length; =20 toobig: - buf->chan->last_toobig =3D length; + buf->stats.big++; return 0; } EXPORT_SYMBOL_GPL(relay_switch_subbuf); @@ -772,11 +773,6 @@ void relay_close(struct rchan *chan) if ((buf =3D *per_cpu_ptr(chan->buf, i))) relay_close_buf(buf); =20 - if (chan->last_toobig) - printk(KERN_WARNING "relay: one or more items not logged " - "[item size (%zd) > sub-buffer size (%zd)]\n", - chan->last_toobig, chan->subbuf_size); - list_del(&chan->list); kref_put(&chan->kref, relay_destroy_channel); mutex_unlock(&relay_channels_mutex); @@ -819,7 +815,7 @@ EXPORT_SYMBOL_GPL(relay_flush); */ void relay_dump(struct rchan *chan, char *buf, int len, int flags) { - unsigned int i, full_counter =3D 0; + unsigned int i, full_counter =3D 0, big_counter =3D 0; struct rchan_buf *rbuf; int offset =3D 0; =20 @@ -832,15 +828,22 @@ void relay_dump(struct rchan *chan, char *buf, int le= n, int flags) if (chan->is_global) { rbuf =3D *per_cpu_ptr(chan->buf, 0); full_counter =3D rbuf->stats.full; + big_counter =3D rbuf->stats.big; } else { for_each_possible_cpu(i) { - if ((rbuf =3D *per_cpu_ptr(chan->buf, i))) + if ((rbuf =3D *per_cpu_ptr(chan->buf, i))) { full_counter +=3D rbuf->stats.full; + big_counter +=3D rbuf->stats.big; + } + } } =20 if (flags & RELAY_DUMP_BUF_FULL) offset +=3D snprintf(buf, sizeof(unsigned int), "%u", full_counter); =20 + if (flags & RELAY_DUMP_WRT_BIG) + offset +=3D snprintf(buf, sizeof(unsigned int), "%u", big_counter); + snprintf(buf + offset, 1, "\n"); } EXPORT_SYMBOL_GPL(relay_dump); --=20 2.43.5 From nobody Thu Dec 18 06:16:04 2025 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1D1524FBFF; Mon, 12 May 2025 02:49:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018199; cv=none; b=hZ2ZvznwoTj1UQPC23jAeaV6cTPSqZpqYlXU94e3flkD7Hmmj5WfUfa0MnUNKVDWzdMSX2Rdz0QnCFkkJDFsfxnnuyuWMwzTIqyoYjptNoy5aBkAEKhJqNZCYSXP1tFgGcBUUl6stEhYo3Cwwq0UJpX7jzYZ60DrM4AQMzqBWR0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747018199; c=relaxed/simple; bh=GWd0OhtOGaHtFqvA+97TszWCfujVfsGuoJ8lWKxPCfo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u1R9K/Ag20qEH4a9CY5i4b33pI6TI1eZCcGuVnPGUqvZ1qb3r/npGDM4/h1Qe0CKgG6gq4YzMseRaspS2DN4icjScTIY7K+ijs6psZWNGjj3iiK5VBTZEYl/ssdUEIPemO5NM46fkEUBL1nDaRXmeq58RQxZ/21Cw7qGuTluDQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hORiPeKB; arc=none smtp.client-ip=209.85.215.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hORiPeKB" Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-af908bb32fdso3042033a12.1; Sun, 11 May 2025 19:49:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747018197; x=1747622997; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0Xn0UxaC2ldBuSBix2lJVTliOIsmpfCjFQjnK6KyfHY=; b=hORiPeKBvIGjtbMuei+7taNrQ6Bj2qXrlyScAFDkP1zounE2jOstWFncbE5DhQoIjB QsSm3dw4KwsScMCucB1aukf77lIUIpOQF2zMrJvGP7fSSOricoTRcRki2ixCkJwbJeRm /REwDg1tIvps0YSSEd3iS68ENiG1ZVZrfXUhe58fMtDhMon1H3Px5p/a8ICsLLRk8axX hu3LUsBiJliBMiXtoaHel/sS/bDauQUQx5UDlxzAdXEPdLpJD1+lNMnWT2A2viOA3cki qZvZg3QVwyJD4w3gyjz51quwZY1juo1J1xxvTg/08FBcJ0nFP4HFI3kysMSxUqmI7Axi MSpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747018197; x=1747622997; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0Xn0UxaC2ldBuSBix2lJVTliOIsmpfCjFQjnK6KyfHY=; b=XZ9Ya6inb+ZYgBfsvN72LjzrD6VmeOsJI/gYFkKXcnZPGevKba3ZGgfl1wteIVm1w8 Oz4qAsy63MqgTQJSWUXsFP98vG0eUB2daPCy0FARxVl5kFusdZ7TF0BLO5UX8+/ZvRlG dsR+b3QFXHwiQxeZrmBr9egbJZV3JCXyfxPXjn7R3P3EiVH4h99VDJBA7U1reA/5ykz9 JY1rh+iYOeJeVZHsBqmnVq0ZWtQf6BRYk5CK3wwc3+h0rnJbUt/bJL1hKonRPy3zgmgT hnznd9OmRxRTWk7qJlAX+2Hdatmc3IhPWSxxUb5VSzLqxFQS4KHgA1KQTbqpx1Au8Vkj kjXA== X-Forwarded-Encrypted: i=1; AJvYcCUIN2hwgEON5Z0e9Ocmk0KTa6RB9N3S2pAmIf84olSoKwCkBdQ7+Y2BzzV/mOppZUQyYDI9uRzB+HTDN8rtuKj+ySqO@vger.kernel.org, AJvYcCULoLZbjer7IMIKvVUE+S3+QUMKVeaqa9jYVhGqYoEZX5DFMmrpTCdj69zAxtYLqjXgVuhhRkWO0Obl6g==@vger.kernel.org X-Gm-Message-State: AOJu0YxMS0DcNK9pHN0RZxf+P5oQd/P8LXZ6SMQgWDg7hqiAvo19sdJf 418KnxHoyx/DB1FIGscpOKgVnuMctZ0gIosV8gduAi3V0w943UO1 X-Gm-Gg: ASbGncsjajbsn3PMHspjWbiMvspiZ1tIu4TEUfMGqcJOzIDkC74AlXcYbRTZTC5b8+S 5Wm7+lzaIyd3+p3hOYmTutENyGoVAsEkzjQu7QUFtu6dU2CKZ3FxPSUdpbPb7WnAsJMjSUZslE+ IEpgxT3psVLu3LtiB6wk9UtZGJ8UlO+yZXB6yhH9JUGG4xxLiGLeIbqnGjHPhMXeKK/x910jYYP jS+sJQ803jVuin8ILLMaRXSgC8niqsS0rxAov24brc2YXUUvHuRXB2z7xiGn4yiB4vXyav+zejJ N4/WdZL4NajmlDeB2t+xjsuIemTXrZYNrGLMuDETJx2xAE51cyMhHpjabiNCnCIUrqIicXq7xHE eeig8Wyknbvt8WWFtbL6rHGs= X-Google-Smtp-Source: AGHT+IEZLb0tNMDYG2FFIR2NAfhSeoHWZDgQb/fQeyOLRn/4m4pOM35xlZM3JgnSVKmonPOsoLs3/w== X-Received: by 2002:a05:6a21:150a:b0:204:594e:29a5 with SMTP id adf61e73a8af0-215ab4ab9b7mr19064407637.4.1747018196810; Sun, 11 May 2025 19:49:56 -0700 (PDT) Received: from KERNELXING-MB0.tencent.com ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b234af2c287sm3938761a12.41.2025.05.11.19.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 May 2025 19:49:56 -0700 (PDT) From: Jason Xing To: axboe@kernel.dk, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Jason Xing , Yushan Zhou Subject: [PATCH v1 5/5] relayfs: uniformally use possible cpu iteration Date: Mon, 12 May 2025 10:49:35 +0800 Message-Id: <20250512024935.64704-6-kerneljasonxing@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20250512024935.64704-1-kerneljasonxing@gmail.com> References: <20250512024935.64704-1-kerneljasonxing@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jason Xing Use for_each_possible_cpu to create per-cpu relayfs file to avoid later hotplug cpu which doesn't have its own file. Reviewed-by: Yushan Zhou Signed-off-by: Jason Xing --- kernel/relay.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/relay.c b/kernel/relay.c index 27f7e701724f..dcb099859e83 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -519,7 +519,7 @@ struct rchan *relay_open(const char *base_filename, kref_init(&chan->kref); =20 mutex_lock(&relay_channels_mutex); - for_each_online_cpu(i) { + for_each_possible_cpu(i) { buf =3D relay_open_buf(chan, i); if (!buf) goto free_bufs; @@ -615,7 +615,7 @@ int relay_late_setup_files(struct rchan *chan, * no files associated. So it's safe to call relay_setup_buf_file() * on all currently online CPUs. */ - for_each_online_cpu(i) { + for_each_possible_cpu(i) { buf =3D *per_cpu_ptr(chan->buf, i); if (unlikely(!buf)) { WARN_ONCE(1, KERN_ERR "CPU has no buffer!\n"); --=20 2.43.5