From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E81672FDC44; Thu, 25 Sep 2025 15:04:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812680; cv=none; b=RlTPBsYSDusdUwBSR9stAgqfIslUgBfZhtymK4PnKdhcn6ZZeSMdLwIf9pIztHVLBN6XkRv81gusSdWqKQOtTxJKYfTHSk0J5zcp3+IiO74gHLXBPpL7zOoAuoBwZuX32XoT43bCmYcyQjMblzMUyzoXpM8e6YCWGBcfh2VVWNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812680; c=relaxed/simple; bh=ZK4lOcTS5NnW+oaUnr0KaAHRKGM2EOkI4dmLtFxJ+8k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fVe8ji5SL17lcA6Ey5lSFKsjjJZuG+imITDT8pxZ3J8pEx72oC7ESADQG18LRSd3Go9spwAUtH4MnrlXOPRtNC2Pi4P3q1jsIQjk9+Rw2f80mnj+aitX+xx4llB+/bzz8f2bzgCLJZcnH/IGhJ/I84tFrd+jN/NvG6ZMYmN0CVQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=a2YnTUqB; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="a2YnTUqB" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812678; x=1790348678; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZK4lOcTS5NnW+oaUnr0KaAHRKGM2EOkI4dmLtFxJ+8k=; b=a2YnTUqBfIHjMZdUiK7P2PrLmg8KEJMQ3tkLeURjmH1MZwoB54gdyvyY M4syPw8lFMG5UpAR42shf8++ALgamN/ZV2dQY3irAN0zqAp9JfSfsYCiB DJ12mdM85v/H5Cq8JdsIr12afCP1kPWDB0wgVm0Ir+gnO1W6YMLJD7cTi EF7NifXj9lDfsfeW9eOTrADOWFox/jwVZ3onXtYjRPp3GlfaIYvyBvGv+ OV388CcZkLhgrR/AFWIH2/kqcP7S2RcQFvC3d1df4qPgWYt8amiiJPnOD l8PwKh21ZseoPDQoIh1d8tB/pE/r6R3ehk5aZMkLWSVYcQjBIo+Z+aL54 A==; X-CSE-ConnectionGUID: 4jD6rXsoRYqMCoNs5v9ZKw== X-CSE-MsgGUID: cZnGGF3nRbiTDHK1bFqQSg== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348654" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:38 +0800 IronPort-SDR: 68d55a06_z++MEzmFVAmqfxm03YHxGt26Rj/FxK0Imi+SAJDYrYekoiY ZTk1dDU6c0+p2bc/zZuSFbjGbHmCqicHFrEFbhw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:38 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:35 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn , Chaitanya Kulkarni Subject: [PATCH blktrace v2 01/22] blktrace: fix comment for struct blk_trace_setup: Date: Thu, 25 Sep 2025 17:04:06 +0200 Message-ID: <20250925150427.67394-2-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Fix a comment misnaming the ioctl(2) passing struct blk_trace_setup. Reviewed-by: Chaitanya Kulkarni Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- blktrace_api.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blktrace_api.h b/blktrace_api.h index 8c760b8..172b4c2 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -127,7 +127,7 @@ struct blk_io_cgroup_payload { }; =20 /* - * User setup structure passed with BLKSTARTTRACE + * User setup structure passed with BLKTRACESETUP */ struct blk_user_trace_setup { char name[32]; /* output */ --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1778530F537; Thu, 25 Sep 2025 15:04:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812684; cv=none; b=i4JsVFbbZ3z2oiycV38Fm6pBkddQg1vLQW0FQlFHmBgwk82aQnraO+6hSIH8LxrknPBSFLQrXqUQvjiqBicBBQXubS+QXx8XuQGdBacZqV6XguSKdlLhcJk1TVJVak1ud/rxPdPlp7JV/uYZpX6m/xYiiGWpmDThzZkSYX4fWSY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812684; c=relaxed/simple; bh=cSzMvT5tIX+eCTmIMd3u0CcszO46qSlWQOtvza30pv4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JMptNQ28svlcMmvpzMnU5hM6EP6EP3ZPLAX8kirw4fVBPi3+pLV7SzlHHSdGfBv0B7KphK3T+a2iWo3OKhHHfemq8jg0Dc9BQeqeVyB/SqPAk9LgWDwO0ykxBb+/Ap013/lVUeMQCxngvsb6ltYMcEIFeNYtUQyh/O/LNLPjDxY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=hCLzznBO; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="hCLzznBO" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812682; x=1790348682; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cSzMvT5tIX+eCTmIMd3u0CcszO46qSlWQOtvza30pv4=; b=hCLzznBOAJ6mPbWJAFCv4h5SmvITZRsmcuhqfNSUm6w0iivZB0L1PAtI 01LlrVdK0Lm/yFD6X2BWTLHeafIjjakYvUir2cSZ/BGQitWLTo96LrKhH DIcraG7k1HU6exJEVA045/PvusAn5MG68vLKjP9Sztst4zafPzbNwO3jy 73TwKAkuewJB7ijKn3G7uwrVs4p/41JdLqnKanbkW0sAQDGk3x3Qx0mo9 lDIz1yI12V6HEbT37aM5ISGdffHQtgteYljnRBtcc0iEu+7FBvEl3CrA5 rjG/Eap+Gxz2z4FFzmKFYg1sPeOwgUtBxlObRBelOD2Aqdpz5d2SaA+QU g==; X-CSE-ConnectionGUID: DGks6rLIRTOrk6HfxT9DMQ== X-CSE-MsgGUID: O03Knby5QOO2klrAtCTlfA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348702" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:42 +0800 IronPort-SDR: 68d55a0a_xxkCvME/vGK4+8Ihkoo3wTjHJdhu/obC+0VMSX4vyH4uDsX LYA4Uy/3mLVOx4fJeYnLQ2SXCHwWyH16azlPlEg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:43 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:39 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 02/22] blkparse: fix compiler warning Date: Thu, 25 Sep 2025 17:04:07 +0200 Message-ID: <20250925150427.67394-3-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable GCC (15.2.1) warns on about the following string truncation in blkparse.c gcc -o blkparse.o -c -Wall -O2 -g -W -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_F= ILE_OFFSET_BITS=3D64 blkparse.c blkparse.c: In function =E2=80=98main=E2=80=99: blkparse.c:2103:68: warning: =E2=80=98):=E2=80=99 directive output may be t= runcated writing 2 bytes into a region of size between 1 and 41 [-Wformat-t= runcation=3D] 2103 | snprintf(line, sizeof(line) - 1, "CPU%d (%s= ):", | = ^~ In function =E2=80=98show_device_and_cpu_stats=E2=80=99, inlined from =E2=80=98show_stats=E2=80=99 at blkparse.c:3064:3, inlined from =E2=80=98main=E2=80=99 at blkparse.c:3386:3: blkparse.c:2103:25: note: =E2=80=98snprintf=E2=80=99 output between 9 and 4= 9 bytes into a destination of size 47 2103 | snprintf(line, sizeof(line) - 1, "CPU%d (%s= ):", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~ 2104 | j, get_dev_name(pdi, name, sizeof(= name))); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~ gcc -Wall -O2 -g -W -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS= =3D64 -o blkparse blkparse.o blkparse_fmt.o rbtree.o act_mask.o Add two more bytes to the string in order to mitigate the compiler warning. Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- blkparse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blkparse.c b/blkparse.c index d6aaa8b..3f4d827 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2023,7 +2023,7 @@ static void show_device_and_cpu_stats(void) struct io_stats total, *ios; unsigned long long rrate, wrate, msec; int i, j, pci_events; - char line[3 + 8/*cpu*/ + 2 + 32/*dev*/ + 3]; + char line[3 + 8/*cpu*/ + 2 + 32/*dev*/ + 3 + 2]; char name[32]; double ratio; =20 --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA8473019BE; Thu, 25 Sep 2025 15:04:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812689; cv=none; b=lIrjp7AUcTZ0XXqAK0bmLWJUVWGY0wjCRxbFAdOgjGEmnexm4Tpb72uOQOwfL7LtzBZR2OYOFcNfqlc5ZwIvc/A0ipjfNiA0Ed4CO/xbbJwjJ0jvz92//BPhEF/0ASqUbmYn28sjU33LsWbM7qpRFlmuv/8PYr8Lvhd8Ee3YEKg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812689; c=relaxed/simple; bh=f6tvFlwHmAwoccibdGr6sMVWUhdk0wCndBcjZ8yKj0Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ssogdzIfP2mX0uEvNIT2z5ub00WZUzb9QhTq75Y5nZkZ5atOT2pm9ulegZs6hz1pj/DSIs2SKSgndsvggdfIvUCOHo+DA1TPOosQUC/61ZhxtWRp+kgOc1nWu3JCOU7PY//y9WfaIph7ulTu+RKJhj7MdfARvXGp1gVeFo6Uz4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=fBqd+pEM; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="fBqd+pEM" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812687; x=1790348687; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=f6tvFlwHmAwoccibdGr6sMVWUhdk0wCndBcjZ8yKj0Q=; b=fBqd+pEMn1wkdyX6qwjb1wTQcKqyIwdrFu/IpOE5fs7SOrjVlaBPmEho GAu16Ot1g+cJesR21vSqw94Lyb9+LYxcB+OA28mCWFLUED4u9FoQpApXa AlskXMiiH2W+SJNYEm1rrCa0vQJ3gMWrZ52zgIewxsRXhLWJdNA1zRY2Z UunKws2ts2rwPmmdpd5NH+lXeYSUIxtL1f0y8YvoLr2C78oCx0unkNC0h I5Xc8RL0pES5VwquYl+UBEmw2hs93utfnghmnJRcn7pbTINA3lA3iS8YQ Gciz4MFoDkRqVmdcmwNNcPgOINF4dj045797OzNYNB42/7F2Q+rIIzyWJ w==; X-CSE-ConnectionGUID: gs/8z8UGRHW91nq9EJJkiA== X-CSE-MsgGUID: X6GQ+6jISqmMbFffBsmFuQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348756" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:46 +0800 IronPort-SDR: 68d55a0e_cwzxfDJ2hXISdHrSVZr8fWhdIaQpK89taf/LW7Ej1B6vdgz 1Z6e0XJODOQr7hW8xuwbEBAjlBh4Sstq+wdKXAg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:47 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:44 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 03/22] blktrace: add definitions for BLKTRACESETUP2 Date: Thu, 25 Sep 2025 17:04:08 +0200 Message-ID: <20250925150427.67394-4-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Add definitions for a new BLKTRACESETUP2 ioctl(2). This new ioctl(2) will request a new, updated structure layout from the kernel which enhances the storage size of the 'action' field in order to store additional tracepoints. Signed-off-by: Johannes Thumshirn --- blktrace_api.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/blktrace_api.h b/blktrace_api.h index 172b4c2..9f435a5 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -139,9 +139,24 @@ struct blk_user_trace_setup { __u32 pid; }; =20 +/* + * User setup structure passed with BLKTRACESETUP2 + */ +struct blk_user_trace_setup2 { + char name[32]; /* output */ + __u64 act_mask; /* input */ + __u32 buf_size; /* input */ + __u32 buf_nr; /* input */ + __u64 start_lba; + __u64 end_lba; + __u32 pid; + __u32 reserved; /* for futute use */ +}; + #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup) #define BLKTRACESTART _IO(0x12,116) #define BLKTRACESTOP _IO(0x12,117) #define BLKTRACETEARDOWN _IO(0x12,118) +#define BLKTRACESETUP2 _IOWR(0x12, 142, struct blk_user_trace_setup2) =20 #endif --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D4A530FF3A; Thu, 25 Sep 2025 15:04:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812693; cv=none; b=fuzXU/PWWIUwPqT6nkO1LViymzqBttS11MGmRkGTdLrxo1udI5rPAbVqPG3lm4AyxoYMjF3DBmHa2CyXcZq4eVnVWarfav+77QsqwBLK8lBwQWmpOOghD/YyuUpa+LMg/8skqAlNwLDTQd4Dv1KTRsQLVOxwR7uV9Bm2WczPp7U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812693; c=relaxed/simple; bh=qtEv5uKcCuKEHByPUXcHd9IS96qiXSbnVERgrids0wI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Spbgj18JdH6ohD/cTOZQ+1dznSqgh1pR4ngOk9RkkrH2WEyA0u49m+RSdu2yrfUvPY066ShGoXuLSSftfVJNJ75o95z5nrN1MgYlC3bWXB1vwetZOImHbLszqQeBxXenKtYAHSwlT0J5W2FetXZyYbinnabFw0PPacLEYF9P4/I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=ndmGy5M7; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="ndmGy5M7" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812691; x=1790348691; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qtEv5uKcCuKEHByPUXcHd9IS96qiXSbnVERgrids0wI=; b=ndmGy5M7AfUawwNGfbzxNZqaAY1vHvmGbZCpvTYqqe+6ZFDxEhZ+OKAA W7H/uuIs0nfFW7tLge5ijbWq1Dg5VhuCJli1+RbkRL3wXsy2xKMHVWCv2 I9FhneAdYRrvGlgkQGkqUKIJ6vIcA6CfxkAXfjYa3ACWfS3CCjH20AaqB ss62lZuS9o+MvnsjFX6oeNbdlyL7cRGB7yWysxSk/kYdsOcQ4b24+gCPx iBGOIx788E9uvCymA3FA+Mfwl5lTJyIl2ISROzepuEVTiTgmuE5d5tdG5 VZwHkr0p/zflatAiYa3+1xK6PgSVk7/5LRlYnoiNEZ5gxw0Kj5TwyyTgS A==; X-CSE-ConnectionGUID: OFmpIydOTZ6sOpxF4bd/QQ== X-CSE-MsgGUID: aJUR2dURSC29vVOZfsa4uA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348817" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:50 +0800 IronPort-SDR: 68d55a13_TYmnQVZgwwBbsHJAg79IoTepjZe+X6NydRsLWgl3B2KZ0mP sxQA4FjvzJesDGwyMavF4ZE97/ko/bSMmiBNk7A== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:51 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:48 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 04/22] blktrace: change size of action to 64 bits Date: Thu, 25 Sep 2025 17:04:09 +0200 Message-ID: <20250925150427.67394-5-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" In order to add the zoned commands to blktrace's actions, the storage size needs to be increased to 64bits. Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- act_mask.c | 4 ++-- blkparse.c | 2 +- blkparse_fmt.c | 15 ++++++++------- blkrawverify.c | 10 +++++----- blktrace.h | 2 +- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/act_mask.c b/act_mask.c index 8f1b8d7..510c7e0 100644 --- a/act_mask.c +++ b/act_mask.c @@ -42,7 +42,7 @@ int find_mask_map(char *string) return -1; } =20 -int valid_act_opt(int x) +unsigned long long valid_act_opt(unsigned long long x) { - return (1 <=3D x) && (x < (1 << BLK_TC_SHIFT)); + return (1ull <=3D x) && (x < (1ull << BLK_TC_SHIFT)); } diff --git a/blkparse.c b/blkparse.c index 3f4d827..512a2d2 100644 --- a/blkparse.c +++ b/blkparse.c @@ -299,7 +299,7 @@ static int per_device_and_cpu_stats =3D 1; static int track_ios; static int ppi_hash_by_pid =3D 1; static int verbose; -static unsigned int act_mask =3D -1U; +static unsigned long long act_mask =3D -1U; static int stats_printed; static int bin_output_msgs =3D 1; int data_is_native =3D -1; diff --git a/blkparse_fmt.c b/blkparse_fmt.c index 9b83d1d..02c5a3c 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 #include "blktrace.h" =20 @@ -52,13 +53,13 @@ int add_format_spec(char *option) =20 static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t) { - int w =3D t->action & BLK_TC_ACT(BLK_TC_WRITE); - int a =3D t->action & BLK_TC_ACT(BLK_TC_AHEAD); - int s =3D t->action & BLK_TC_ACT(BLK_TC_SYNC); - int m =3D t->action & BLK_TC_ACT(BLK_TC_META); - int d =3D t->action & BLK_TC_ACT(BLK_TC_DISCARD); - int f =3D t->action & BLK_TC_ACT(BLK_TC_FLUSH); - int u =3D t->action & BLK_TC_ACT(BLK_TC_FUA); + bool w =3D !!(t->action & BLK_TC_ACT(BLK_TC_WRITE)); + bool a =3D !!(t->action & BLK_TC_ACT(BLK_TC_AHEAD)); + bool s =3D !!(t->action & BLK_TC_ACT(BLK_TC_SYNC)); + bool m =3D !!(t->action & BLK_TC_ACT(BLK_TC_META)); + bool d =3D !!(t->action & BLK_TC_ACT(BLK_TC_DISCARD)); + bool f =3D !!(t->action & BLK_TC_ACT(BLK_TC_FLUSH)); + bool u =3D !!(t->action & BLK_TC_ACT(BLK_TC_FUA)); int i =3D 0; =20 if (f) diff --git a/blkrawverify.c b/blkrawverify.c index ed5d258..9c5d595 100644 --- a/blkrawverify.c +++ b/blkrawverify.c @@ -55,7 +55,7 @@ static struct trace_info traces[] =3D { #define N_TRACES (sizeof(traces) / sizeof(struct trace_info)) =20 struct act_info { - __u32 val; + __u64 val; char *string; }; =20 @@ -80,12 +80,12 @@ static struct act_info acts[] =3D { }; #define N_ACTS (sizeof(acts) / sizeof(struct act_info)) =20 -static char *act_to_str(__u32 action) +static char *act_to_str(__u64 action) { static char buf[1024]; unsigned int i; - unsigned int act =3D action & 0xffff; - unsigned int trace =3D (action >> BLK_TC_SHIFT) & 0xffff; + unsigned long long act =3D action & 0xffffffff; + unsigned long long trace =3D (action >> BLK_TC_SHIFT) & 0xffffffff; =20 if (act < N_ACTS) { sprintf(buf, "%s ", acts[act].string); @@ -97,7 +97,7 @@ static char *act_to_str(__u32 action) } } else - sprintf(buf, "Invalid action=3D%08x", action); + sprintf(buf, "Invalid action=3D%016llx", action); =20 return buf; } diff --git a/blktrace.h b/blktrace.h index 944fc08..74dfb48 100644 --- a/blktrace.h +++ b/blktrace.h @@ -144,7 +144,7 @@ extern void set_all_format_specs(char *); extern int add_format_spec(char *); extern void process_fmt(char *, struct per_cpu_info *, struct blk_io_trace= *, unsigned long long, int, unsigned char *); -extern int valid_act_opt(int); +extern unsigned long long valid_act_opt(unsigned long long); extern int find_mask_map(char *); extern char *find_process_name(pid_t); =20 --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A870931159C; Thu, 25 Sep 2025 15:04:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812697; cv=none; b=CzKBCApdtkwfNL+aEZr0iD3Ve7kjRxzQgpVY9e+E9YdTmw8KAbDTk92Qz6hwGrW3R22wYdx0ZIFNdUDoWZbw5cET1WzaJZQqQmTwxh5dwfWGkLpawPyUaq/wfQH82TYgkW/o66touLTAQTKcigk3WVtazwnMYLjVyO1rXB6dO9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812697; c=relaxed/simple; bh=2SBoig+2av9xZLZVm0aXbXBPvQ0ssmJIyDrkle9d9eA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=l4+9u5RxsSUfXV3QcRGuOlKbolGAzo6etwOv0/vu7ZDxr/zy1ssgv4S4ir05pNqnh0u78Uv3zJZur7zpxaFDwnU3EVD0iVBRNhaY3ClLlWb5zxbuVVdctDanz6iHo2kQc6tG/WNhW6iYGWu4XpkrwE1u9jeRqNVFtE1qJvdCRCc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=j7mv42si; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="j7mv42si" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812695; x=1790348695; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2SBoig+2av9xZLZVm0aXbXBPvQ0ssmJIyDrkle9d9eA=; b=j7mv42si6cm8P8ypBzK6QECFVjPRDk4jaj6yr2pomB9Fit7b9WfYPSca PuBCwP7Q62Q81gf3KpLxCBAKAgZ8LPhsGWyqcZ6u8WxzEomHLl5M7xhwe 7InBqnsvztuaUYsjF54ydo4HC/dozQIsLSuMtiOD/9V+8Z0nmxS2HA7k7 XlIOXH9MgzzIduoaOTnK7Ry708HoNdTrZ3HBRLxwCBtmwVSdCTaEjUd0E PC7sZBAgHKfGAmRj4EX07xH7Z75hpjIYPtByUt8/XHY+yFrVeneoGzWCE xE1YyG1Bn1MpknB7Z0JQ0afyVXC56npkNyRQgcCJ67InH1JHasPUEKAy+ w==; X-CSE-ConnectionGUID: DaaShNV6QG+NjzP2aqM+nA== X-CSE-MsgGUID: pdkHUg/xSfq8pOnErtn2OQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348843" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:55 +0800 IronPort-SDR: 68d55a17_rObRgyxLzQel/zhRBfiyB+kWeXhKbc17NjGFb7o221PUO9L 1aAoN94ex7EALreRQRyQ6lAvJQRFrPFWtrQTJLA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:55 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:52 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 05/22] blktrace: add definitions for blk_io_trace2 Date: Thu, 25 Sep 2025 17:04:10 +0200 Message-ID: <20250925150427.67394-6-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Add 'struct blk_io_trace2' which represents the extended version of the blktrace protocol. Signed-off-by: Johannes Thumshirn --- blktrace_api.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/blktrace_api.h b/blktrace_api.h index 9f435a5..bbf075f 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -27,8 +27,19 @@ enum { BLK_TC_END =3D 1 << 15, /* we've run out of bits! */ }; =20 +enum blktrace_cat2 { + BLK_TC_ZONE_APPEND =3D 1 << 1ull, /* zone append */ + BLK_TC_ZONE_RESET =3D 1 << 2ull, /* zone reset */ + BLK_TC_ZONE_RESET_ALL =3D 1 << 3ull, /* zone reset all */ + BLK_TC_ZONE_FINISH =3D 1 << 4ull, /* zone finish */ + BLK_TC_ZONE_OPEN =3D 1 << 5ull, /* zone open */ + BLK_TC_ZONE_CLOSE =3D 1 << 6ull, /* zone close */ +}; + #define BLK_TC_SHIFT (16) #define BLK_TC_ACT(act) ((act) << BLK_TC_SHIFT) +#define BLK_TC_SHIFT2 (32) +#define BLK_TC_ACT2(act) ((__u64)(act) << BLK_TC_SHIFT2) =20 /* * Basic trace actions @@ -51,6 +62,7 @@ enum { __BLK_TA_REMAP, /* bio was remapped */ __BLK_TA_ABORT, /* request aborted */ __BLK_TA_DRV_DATA, /* binary driver data */ + __BLK_TA_ZONE_MGMT, /* zone management command was issued */ __BLK_TA_CGROUP =3D 1 << 8, }; =20 @@ -85,12 +97,20 @@ enum blktrace_notify { #define BLK_TA_ABORT (__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE)) #define BLK_TA_DRV_DATA (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA)) =20 +#define BLK_TA_ZONE_APPEND (__BLK_TA_COMPLETE |\ + BLK_TC_ACT2(BLK_TC_ZONE_APPEND)) +#define BLK_TA_ZONE_MGMT __BLK_TA_ZONE_MGMT +#define BLK_TA_ZONE_PLUG (__BLK_TA_ZONE_PLUG | BLK_TC_ACT(BLK_TC_QU= EUE)) +#define BLK_TA_ZONE_UNPLUG (__BLK_TA_ZONE_UNPLUG |\ + BLK_TC_ACT(BLK_TC_QUEUE)) + #define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY)) #define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY)) #define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY)) =20 #define BLK_IO_TRACE_MAGIC 0x65617400 #define BLK_IO_TRACE_VERSION 0x07 +#define BLK_IO_TRACE2_VERSION 0x08 =20 /* * The trace itself @@ -118,6 +138,21 @@ struct blk_io_trace_remap { __u64 sector_from; }; =20 +struct blk_io_trace2 { + __u32 magic; /* MAGIC << 8 | BLK_IO_TRACE2_VERSION */ + __u32 sequence; /* event number */ + __u64 time; /* in nanoseconds */ + __u64 sector; /* disk offset */ + __u32 bytes; /* transfer length */ + __u32 pid; /* who did it */ + __u64 action; /* what happened */ + __u32 device; /* device number */ + __u32 cpu; /* on what cpu did it happen */ + __u16 error; /* completion error */ + __u16 pdu_len; /* length of data after this trace */ + /* cgroup id will be stored here if exists */ +}; + /* * Payload with originating cgroup info */ --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D678D303A14; Thu, 25 Sep 2025 15:04:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812701; cv=none; b=LounMZ6fkHb3cLR3QL3tiL1SeGshVZjcK2WUYzW1M2/MD7e3vygSfVlt5o+e6CEuZU6GyisEJnpFzyj13Ev0uGQmoqJN/JRlCMEU5fLGW2R9wbrnbDRkyIEpC8lPZgAmJo/febeyRTEu6Zs9XHjtM5Peh+J50y8lTf2uQZmFeJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812701; c=relaxed/simple; bh=mPQj5kqwyRWqC+fMnaW0oDN1trAQZBc40cPOBN7KYso=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QM9PvmXnm+7a/Ouwy4h5H+glt/Yonlxo7sVe+BXa2a+1zjZoG8h9K62ucpwNCSKqeTlf+ndwSmG9EeWZIAgS3DlUJ3brDAHsy5dQvqrdLrEn94o9v1aJ1Wx+PImROnNBS8xZ3lL1gh/Cm6ol3s1TV55oq9yXtCRDhltMugBQbNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=CCmUzyG0; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="CCmUzyG0" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812699; x=1790348699; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mPQj5kqwyRWqC+fMnaW0oDN1trAQZBc40cPOBN7KYso=; b=CCmUzyG0X6dAH5pG/b7o+PeOFTad8xP+evyGfrLd+o/r9wyPHFonDJ8j uGwsIEjbmen/mmKxkoX3Nm2uAn0+T33p/h9jrD8p8HNq6v42EBZ1fQo2i sZajB41p3nLf0tRW3wcFkl29I7jwvC4HdkkRund7m+7GEcsqQad+ZVrrH 50W2oSmOfsz3H3AlZLwk7M/Mose56qfQ36eY9DCKWQXfhiTs+WKFFsADm A7zfpBkB5LWISnCs4tJFRUh/xab3Q4l4AboY/iORIMHN7WWeFr0b7DeSj rju5V9T3G4koBpeEFtr5cKdda/SHuW2S0I+Xfu+7r18SfNRBTUD2+wbLY g==; X-CSE-ConnectionGUID: J8+yJo9lQHmFtg6zbnwxDw== X-CSE-MsgGUID: fdgnNUXuTv684qvJBpot2g== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348865" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:04:59 +0800 IronPort-SDR: 68d55a1b_9hfABZjMWnU8gWsM5VU/vbo9e8gsDd+j6jhIIPce8XcD6B5 uehiUXeAi7TGMpRBFv0HcG8hUtLBLstVUbjLc3w== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:04:59 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:04:56 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 06/22] blktrace: support protocol version 8 Date: Thu, 25 Sep 2025 17:04:11 +0200 Message-ID: <20250925150427.67394-7-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Also support protocol version 8 in conjunction with protocol version 7. Signed-off-by: Johannes Thumshirn --- blktrace.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/blktrace.h b/blktrace.h index 74dfb48..3305fa0 100644 --- a/blktrace.h +++ b/blktrace.h @@ -69,6 +69,7 @@ extern struct timespec abs_start_time; =20 #define CHECK_MAGIC(t) (((t)->magic & 0xffffff00) =3D=3D BLK_IO_TRACE_MAG= IC) #define SUPPORTED_VERSION (0x07) +#define SUPPORTED_VERSION2 (0x08) =20 #if __BYTE_ORDER =3D=3D __LITTLE_ENDIAN #define be16_to_cpu(x) __bswap_16(x) @@ -90,13 +91,17 @@ extern struct timespec abs_start_time; =20 static inline int verify_trace(struct blk_io_trace *t) { + u8 version; + if (!CHECK_MAGIC(t)) { fprintf(stderr, "bad trace magic %x\n", t->magic); return 1; } - if ((t->magic & 0xff) !=3D SUPPORTED_VERSION) { - fprintf(stderr, "unsupported trace version %x\n",=20 - t->magic & 0xff); + + version =3D t->magic & 0xff; + if (version !=3D SUPPORTED_VERSION && + version !=3D SUPPORTED_VERSION2) { + fprintf(stderr, "unsupported trace version %x\n", version); return 1; } =20 --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 203273128B8; Thu, 25 Sep 2025 15:05:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812705; cv=none; b=B/VK4qamV385BlNFoAI1pZw0W6y/sMUUQgw7hnB/CKZ9kY/sRtsQ8cKq0+WjdJTtP4/ijVq1/m+VsCktZd47etu1lVx9WyNN2rCjEozHALDZL6qwrSS4fhHiuzhScto1kgt5Xa3pQOFBJEGH8t4BWO6OVBGNf9lclmbyen5rH/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812705; c=relaxed/simple; bh=oyYrdXwqykM5wRW6N9yWSSyE3TZgc1QhkApGxvOpN8Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UwAR7/mxp9YVdWQsOE1SDK/orY5C7gajbIlOgOzkJbmtEjo4BoTVfR0NDFVa5O+Fx0/liNnDuLCD6bYiGJBk8hu5qQcR7xZJE+lssAJ28Et5sas6D2yA5F81MRfrGjg+EG0oygAiNjRhZSD+now1SJzHG3s7LGfC7HsYy22g88k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=c4DE0UhJ; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="c4DE0UhJ" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812703; x=1790348703; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oyYrdXwqykM5wRW6N9yWSSyE3TZgc1QhkApGxvOpN8Q=; b=c4DE0UhJXmsb+xO2UkUG4QCVvPn4BzyJvBsXE0Xe8alCGVupCdtexBwK n+vk2EDZX3uR5SFur7omveTyi/iz4KOv8aIj57ML9O1vBglMnQph7D3uW onehyfeXIIGSuMadD3Igei6cmHaDWvjq/9r5AwcRq1Omp8EIrbqG8xmHw 87N/tU0DXge7g50hCaU3ILQepjQDZ76H6b2T/g9ZePVT3JnXX0NxRUAja YEJyQbQZGKWNF+ZT/OW1kn4TH/MOULmUoldcZtrxHAnHHJMGRp4WVtM5C vFm6ELlu5E+wlJ0vvadZjnviIYwVDzniQ8OHi+PMYHejeI/R+/jji4sW2 A==; X-CSE-ConnectionGUID: +Vg0IXEpTYy24ueJqSveQw== X-CSE-MsgGUID: XxL2Hd8dTPma7DD/A+N9Ag== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348899" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:03 +0800 IronPort-SDR: 68d55a1f_2wtJ6b+NwQ54VI/Is/D/LdGMQp0dqeFyLnLV1UbcIoDZrey jOC9W0b+ngpcjwKaBn3FoQVH/PiLaHDkiCRDhzA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:04 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:00 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 07/22] blkparse: pass magic to get_magic Date: Thu, 25 Sep 2025 17:04:12 +0200 Message-ID: <20250925150427.67394-8-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Pass the magic value to get_magic() instead of the whole 'struct blk_io_trace'. This is a preparation for distinguishing between two different types of blktrace protocol versions in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blkparse.c b/blkparse.c index 512a2d2..d58322c 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2420,12 +2420,12 @@ static inline __u16 get_pdulen(struct blk_io_trace = *bit) return __bswap_16(bit->pdu_len); } =20 -static inline __u32 get_magic(struct blk_io_trace *bit) +static inline __u32 get_magic(__u32 magic) { if (data_is_native) - return bit->magic; + return magic; =20 - return __bswap_32(bit->magic); + return __bswap_32(magic); } =20 static int read_events(int fd, int always_block, int *fdblock) @@ -2458,7 +2458,7 @@ static int read_events(int fd, int always_block, int = *fdblock) if (data_is_native =3D=3D -1 && check_data_endianness(bit->magic)) break; =20 - magic =3D get_magic(bit); + magic =3D get_magic(bit->magic); if ((magic & 0xffffff00) !=3D BLK_IO_TRACE_MAGIC) { fprintf(stderr, "Bad magic %x\n", magic); break; @@ -2604,7 +2604,7 @@ static int ms_prime(struct ms_stream *msp) if (data_is_native =3D=3D -1 && check_data_endianness(bit->magic)) goto err; =20 - magic =3D get_magic(bit); + magic =3D get_magic(bit->magic); if ((magic & 0xffffff00) !=3D BLK_IO_TRACE_MAGIC) { fprintf(stderr, "Bad magic %x\n", magic); goto err; --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C813311C1E; Thu, 25 Sep 2025 15:05:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812709; cv=none; b=ZTu8Na+Wwmp4klI0JuU5fvjgKBKqQ4a69doH0PWDwub4WTpaI5wOTnlbBw+2j0adeXKoBBt61s0L4KdVyNQJrb7xgEwoX3rQm8Ds2a6aelgXZ8RarFkhlN9eM14LmzTdb7bEXaZiwJpIIcycWyn6nxEgKJq5o6IGaDADJNe+I4Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812709; c=relaxed/simple; bh=FTAoOSz6/+aBx9BQg8CKa15JSKRi7Q8RjuynnHXeh2U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A7rEq/2Dm0CeeZX/y33YWGASdZ7N8L3sm/jWCpPeR86Rat7Ct0MQws4dWGfNX4lc+KQxA/GpQKGx/QzMPvs/7DJATuzkO19WJBNLv1Js5mO0UXmqUB3VT+llNnactGXzHuq+LebZCE+zn7QUPoRLkNNUoumAJIS8C4Fo6i3X4Ng= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=rLyGVv7H; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="rLyGVv7H" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812708; x=1790348708; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FTAoOSz6/+aBx9BQg8CKa15JSKRi7Q8RjuynnHXeh2U=; b=rLyGVv7HIlqdZXwHoWGS/FR6g0sKPli1/cLHWn28wTD6ZIg49oLxFUW5 zCm+prTjOrUC8QTKMX3661EM/5pOblOjZ0k8+zG8PvoZMY9rXzY8oYW/A fY13f41Zdbr/GOGoTzmb2KoWJ80xeUG2gyqG72E1O9wG++xKpHdLUffjh cTzu1fNzXj1tVRFNHATZ+9R+OQFoP8IZNiNsJhczdw8J7URiSUizAHkv1 8KUUC3rBs/8kOmOeCDAKZ1m/tApY//ndvsuFra3MhZ/Me1Pw2m9A2o4mO O9YF0AYXp7hP4slxp42lQaY+ieFO9pcG6t8AkTjVEQMYo652z6IJu8Ep6 g==; X-CSE-ConnectionGUID: 3eTEnP0CRGW/rz0uVbzxZA== X-CSE-MsgGUID: Opv3JocjSJi3YRceP2gcTw== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348926" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:07 +0800 IronPort-SDR: 68d55a23_vOQv7dDegYlAhaEu4pAjpea1Omv3IoIjcIf6bY0e5hn1GU2 fEHGoxcgUoTU4wcY8+6xwCizyfsvg5gsG8AFm1A== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:08 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:05 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 08/22] blkparse: read 'magic' first Date: Thu, 25 Sep 2025 17:04:13 +0200 Message-ID: <20250925150427.67394-9-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Read the 'magic' portion of 'struct blk_io_trace' first when reading the tracefile and only if all magic checks succeed, read the rest of the trace. This is a preparation of supporting multiple trace protocol versions. Signed-off-by: Johannes Thumshirn --- blkparse.c | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/blkparse.c b/blkparse.c index d58322c..5645c31 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2438,14 +2438,13 @@ static int read_events(int fd, int always_block, in= t *fdblock) struct trace *t; int pdu_len, should_block, ret; __u32 magic; - - bit =3D bit_alloc(); + void *p; =20 should_block =3D !events || always_block; =20 - ret =3D read_data(fd, bit, sizeof(*bit), should_block, fdblock); + ret =3D read_data(fd, &magic, sizeof(magic), should_block, + fdblock); if (ret) { - bit_free(bit); if (!events && ret < 0) events =3D ret; break; @@ -2455,15 +2454,28 @@ static int read_events(int fd, int always_block, in= t *fdblock) * look at first trace to check whether we need to convert * data in the future */ - if (data_is_native =3D=3D -1 && check_data_endianness(bit->magic)) + if (data_is_native =3D=3D -1 && check_data_endianness(magic)) break; =20 - magic =3D get_magic(bit->magic); + magic =3D get_magic(magic); if ((magic & 0xffffff00) !=3D BLK_IO_TRACE_MAGIC) { fprintf(stderr, "Bad magic %x\n", magic); break; } =20 + bit =3D bit_alloc(); + bit->magic =3D magic; + p =3D (void *) ((u8 *)bit + sizeof(magic)); + + ret =3D read_data(fd, p, sizeof(*bit) - sizeof(magic), + should_block, fdblock); + if (ret) { + bit_free(bit); + if (!events && ret < 0) + events =3D ret; + break; + } + pdu_len =3D get_pdulen(bit); if (pdu_len) { void *ptr =3D realloc(bit, sizeof(*bit) + pdu_len); @@ -2596,20 +2608,30 @@ static int ms_prime(struct ms_stream *msp) int ret, pdu_len, ndone =3D 0; =20 for (i =3D 0; !is_done() && pci->fd >=3D 0 && i < rb_batch; i++) { - bit =3D bit_alloc(); - ret =3D read_data(pci->fd, bit, sizeof(*bit), 1, &pci->fdblock); + void *p; + + ret =3D read_data(pci->fd, &magic, sizeof(magic), 1, + &pci->fdblock); if (ret) goto err; =20 - if (data_is_native =3D=3D -1 && check_data_endianness(bit->magic)) + if (data_is_native =3D=3D -1 && check_data_endianness(magic)) goto err; =20 - magic =3D get_magic(bit->magic); + magic =3D get_magic(magic); if ((magic & 0xffffff00) !=3D BLK_IO_TRACE_MAGIC) { fprintf(stderr, "Bad magic %x\n", magic); goto err; =20 } + bit =3D bit_alloc(); + bit->magic =3D magic; + p =3D (void *) ((u8 *)bit + sizeof(magic)); + + ret =3D read_data(pci->fd, p, sizeof(*bit) - sizeof(magic), 1, + &pci->fdblock); + if (ret) + goto err; =20 pdu_len =3D get_pdulen(bit); if (pdu_len) { @@ -2639,6 +2661,7 @@ static int ms_prime(struct ms_stream *msp) handle_notify(bit); output_binary(bit, sizeof(*bit) + bit->pdu_len); bit_free(bit); + bit =3D NULL; =20 i -=3D 1; continue; @@ -2659,6 +2682,7 @@ static int ms_prime(struct ms_stream *msp) } =20 ndone++; + bit =3D NULL; } =20 return ndone; --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DF5C313D45; Thu, 25 Sep 2025 15:05:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812714; cv=none; b=qdXeYYAjK0F/65DPTii2PEg58gUq+BYe02xcQre+j/b3+hm94VJoCekVdoXDbZZzjgZfgiB/RnQyAgtvgC5hLiBFHQR9Yq1HOSVBxtMxTske1Iz0FBIICFd+V6YUZldOiYMbhVA8LYqOVy7V/hOFMigqHd+58FPUJTASchRCy6w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812714; c=relaxed/simple; bh=L+8UyA6iiD9Ekl8XA5j3W5j/jFvgUTnQ+JA5g5clhsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tvJ26V1ycDe2cIpbIJi7pX2eipBQ29L/3/JPkqbQZmN2XY8fVuf3bHQL7zAdIELyCJFBu2iH2zEAC1B9OBR6sKTlIXJir6WUBt818KOWsYt9Z6gjXz5iQ5sxpBYp7P3tEYL9gbwKzk+rDmIPweZD3xw8AnhVWjalwmMBZUd8HjY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=l88M8hEK; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="l88M8hEK" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812712; x=1790348712; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L+8UyA6iiD9Ekl8XA5j3W5j/jFvgUTnQ+JA5g5clhsg=; b=l88M8hEK96vrZ62ou8HDJXQcgT77akXD8firvmriaa1DT7Kj0Ah8qTER kboEtUza62hk8u4C1mrZD9zZGEV3RHyRgwNL5VTBZdVdl5CZNZC7Wr1oR rztPHQmNOWvPfL4KPZOCUIeyREblgtHYHbBorZEKZG2Gk9OI/EJQpbkh+ yuEtz2gH1a3Qr51XEtQcy+E8Fp+orkPj/aQTYeX2Pk8ajAU2sFhlX6feo 3uXmcx9sjomz6B99ZvMYwZurCHJh15qsui7m3hx6LrFMOT5m69BTSYqks L4f8X4fBSsuenraLhmpvxwruc2EOl2N0xs/rFN92j+xzYajo7P18Aw2xp Q==; X-CSE-ConnectionGUID: CjxxgMlTT+6QwvohaMNcYg== X-CSE-MsgGUID: uRZ7A50PRXemktGeKDihCQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348964" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:12 +0800 IronPort-SDR: 68d55a28_FOTPvU/fIlyghUs20P4howEFEWxCqeseZeKCPx6RgpI7lDo bjlQI0eA5kV/IMWe26XO9tcbBL5Snt9eFDm/oaQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:12 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:09 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 09/22] blkparse: factor out reading of a singe blk_io_trace event Date: Thu, 25 Sep 2025 17:04:14 +0200 Message-ID: <20250925150427.67394-10-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Factor out reading a single blk_io_trace event. This de-duplicates code and also prepares for expansion with new trace protocol versions. Signed-off-by: Johannes Thumshirn --- blkparse.c | 78 ++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 44 deletions(-) diff --git a/blkparse.c b/blkparse.c index 5645c31..2e175b8 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2428,6 +2428,34 @@ static inline __u32 get_magic(__u32 magic) return __bswap_32(magic); } =20 +static int read_one_bit(int fd, struct blk_io_trace *bit, int block, + int *fdblock) +{ + int ret; + int pdu_len; + void *p =3D (void *) ((u8 *)bit + sizeof(__u32)); + + ret =3D read_data(fd, p, sizeof(*bit) - sizeof(__u32), block, fdblock); + if (ret) + return ret; + + pdu_len =3D get_pdulen(bit); + if (pdu_len) { + void *ptr =3D realloc(bit, sizeof(*bit) + pdu_len); + + ret =3D read_data(fd, ptr + sizeof(*bit), pdu_len, 1, fdblock); + if (ret) { + free(ptr); + return ret; + } + bit =3D ptr; + } + + trace_to_cpu(bit); + + return 0; +} + static int read_events(int fd, int always_block, int *fdblock) { struct per_dev_info *pdi =3D NULL; @@ -2436,9 +2464,8 @@ static int read_events(int fd, int always_block, int = *fdblock) while (!is_done() && events < rb_batch) { struct blk_io_trace *bit; struct trace *t; - int pdu_len, should_block, ret; + int should_block, ret; __u32 magic; - void *p; =20 should_block =3D !events || always_block; =20 @@ -2465,33 +2492,14 @@ static int read_events(int fd, int always_block, in= t *fdblock) =20 bit =3D bit_alloc(); bit->magic =3D magic; - p =3D (void *) ((u8 *)bit + sizeof(magic)); =20 - ret =3D read_data(fd, p, sizeof(*bit) - sizeof(magic), - should_block, fdblock); - if (ret) { - bit_free(bit); - if (!events && ret < 0) - events =3D ret; + ret =3D read_one_bit(fd, bit, 1, fdblock); + if (ret) break; - } - - pdu_len =3D get_pdulen(bit); - if (pdu_len) { - void *ptr =3D realloc(bit, sizeof(*bit) + pdu_len); - - if (read_data(fd, ptr + sizeof(*bit), pdu_len, 1, fdblock)) { - bit_free(ptr); - break; - } - - bit =3D ptr; - } - - trace_to_cpu(bit); =20 if (verify_trace(bit)) { bit_free(bit); + bit =3D NULL; continue; } =20 @@ -2605,10 +2613,9 @@ static int ms_prime(struct ms_stream *msp) struct per_dev_info *pdi =3D msp->pdi; struct per_cpu_info *pci =3D get_cpu_info(pdi, msp->cpu); struct blk_io_trace *bit =3D NULL; - int ret, pdu_len, ndone =3D 0; + int ret, ndone =3D 0; =20 for (i =3D 0; !is_done() && pci->fd >=3D 0 && i < rb_batch; i++) { - void *p; =20 ret =3D read_data(pci->fd, &magic, sizeof(magic), 1, &pci->fdblock); @@ -2626,28 +2633,11 @@ static int ms_prime(struct ms_stream *msp) } bit =3D bit_alloc(); bit->magic =3D magic; - p =3D (void *) ((u8 *)bit + sizeof(magic)); =20 - ret =3D read_data(pci->fd, p, sizeof(*bit) - sizeof(magic), 1, - &pci->fdblock); + ret =3D read_one_bit(pci->fd, bit, 1, &pci->fdblock); if (ret) goto err; =20 - pdu_len =3D get_pdulen(bit); - if (pdu_len) { - void *ptr =3D realloc(bit, sizeof(*bit) + pdu_len); - ret =3D read_data(pci->fd, ptr + sizeof(*bit), pdu_len, - 1, &pci->fdblock); - if (ret) { - free(ptr); - bit =3D NULL; - goto err; - } - - bit =3D ptr; - } - - trace_to_cpu(bit); if (verify_trace(bit)) goto err; =20 --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AB7E6313E3A; Thu, 25 Sep 2025 15:05:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812718; cv=none; b=N86b59fWgvOBUP2h1dTxDxQwY2s2miJRbG99cy2QrtokVF+I7jhJqaXyVZVVM4cHF42XCyxiEqj7PHLIMrf+a3bacPfsFWyCM6oakzTWfJf+h8+28FLgu9TY6mf8ush2d1lf2KlrNgUwa/GOaTmgzNuG1OQRVyUyFL3dNOUO8AA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812718; c=relaxed/simple; bh=3onupmVD5/2IoDoElAt/o05PCAfeDat+6p0RvJChYCo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BYqGsLf3sGh/HGnC+qDseEdnMpEUTbIKeQ7x5sAsx22vKtvEzH6rswABhBySJ4Sd+MDVklraOMfEUgLM1TEQHR+qa/Xtw2tLzvyVjZQl9IpqY5a9QJr6qSJhsP7CE4iPyW3sfqaQBbvUbKals5+qr3DGGyOHDN9RfdkDm2TLWeM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=DehIfYce; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="DehIfYce" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812716; x=1790348716; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3onupmVD5/2IoDoElAt/o05PCAfeDat+6p0RvJChYCo=; b=DehIfYceYjcC1u1qNPKvNfQU1iQ1essDgg2QipWNWNCom9lBf5YynHkN RKMRMybhX7C8ZJyOl/xviSQb8Dr2kmklV7bRVOHYhEW1kqcpsAy0rygx4 VE1iXw637z70khr9x1IQC1EeT84c6uy/5eDxmUDTR68uQPUnFTo90foGA DpZ1T6Wua2bvuji2P9q0AS305QR0lVmwWr/KHY6TAQVKkP1PTjmnSao7l GQ/6xNa4jCgDVgzKT0hLh8Tgd0hAH5p6s67sUnrKBVH3MMJ/my8SJjrIb JgLwPRKKNLj5yYphlrO/1AyiPs8dOGNdTOhgCtjWN7TsvheOH7YuXuvJ7 A==; X-CSE-ConnectionGUID: uoWEkBHWQCCdUWfNmF/Xew== X-CSE-MsgGUID: jDIE4+AiSRCMr5/rEYfnug== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349023" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:16 +0800 IronPort-SDR: 68d55a2c_dKHWDae2EqzLqtkhIun/FJYm7CuZEjLziZyp/dVBGrwOsxQ qUfPrMxMeghUDxBurQEVy8jSe9QG+ox+1rbVaZg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:16 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:13 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 10/22] blkparse: skip unsupported protocol versions Date: Thu, 25 Sep 2025 17:04:15 +0200 Message-ID: <20250925150427.67394-11-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Skip unsupported protocol versions for now. Signed-off-by: Johannes Thumshirn --- blkparse.c | 136 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 76 insertions(+), 60 deletions(-) diff --git a/blkparse.c b/blkparse.c index 2e175b8..163da73 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2462,10 +2462,10 @@ static int read_events(int fd, int always_block, in= t *fdblock) unsigned int events =3D 0; =20 while (!is_done() && events < rb_batch) { - struct blk_io_trace *bit; struct trace *t; int should_block, ret; __u32 magic; + u8 version; =20 should_block =3D !events || always_block; =20 @@ -2489,42 +2489,50 @@ static int read_events(int fd, int always_block, in= t *fdblock) fprintf(stderr, "Bad magic %x\n", magic); break; } + version =3D magic & 0xff; + if (version =3D=3D SUPPORTED_VERSION) { + struct blk_io_trace *bit; + bit =3D bit_alloc(); + bit->magic =3D magic; =20 - bit =3D bit_alloc(); - bit->magic =3D magic; + ret =3D read_one_bit(fd, bit, 1, fdblock); + if (ret) + break; =20 - ret =3D read_one_bit(fd, bit, 1, fdblock); - if (ret) - break; + /* + * not a real trace, so grab and handle it here + */ + if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && + (bit->action & ~__BLK_TN_CGROUP) !=3D BLK_TN_MESSAGE) { + handle_notify(bit); + output_binary(bit, sizeof(*bit) + bit->pdu_len); + continue; + } =20 - if (verify_trace(bit)) { - bit_free(bit); - bit =3D NULL; - continue; - } + if (verify_trace(bit)) { + bit_free(bit); + bit =3D NULL; + continue; + } =20 - /* - * not a real trace, so grab and handle it here - */ - if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && (bit->action & ~__BLK_TN_= CGROUP) !=3D BLK_TN_MESSAGE) { - handle_notify(bit); - output_binary(bit, sizeof(*bit) + bit->pdu_len); - continue; - } + t =3D t_alloc(); + memset(t, 0, sizeof(*t)); + t->bit =3D bit; + t->read_sequence =3D read_sequence; =20 - t =3D t_alloc(); - memset(t, 0, sizeof(*t)); - t->bit =3D bit; - t->read_sequence =3D read_sequence; + t->next =3D trace_list; + trace_list =3D t; =20 - t->next =3D trace_list; - trace_list =3D t; + if (!pdi || pdi->dev !=3D bit->device) + pdi =3D get_dev_info(bit->device); =20 - if (!pdi || pdi->dev !=3D bit->device) - pdi =3D get_dev_info(bit->device); + if (bit->time > pdi->last_read_time) + pdi->last_read_time =3D bit->time; + } else { + fprintf(stderr, "unsupported version %d\n", version); + continue; + } =20 - if (bit->time > pdi->last_read_time) - pdi->last_read_time =3D bit->time; =20 events++; } @@ -2616,6 +2624,7 @@ static int ms_prime(struct ms_stream *msp) int ret, ndone =3D 0; =20 for (i =3D 0; !is_done() && pci->fd >=3D 0 && i < rb_batch; i++) { + u8 version; =20 ret =3D read_data(pci->fd, &magic, sizeof(magic), 1, &pci->fdblock); @@ -2631,46 +2640,53 @@ static int ms_prime(struct ms_stream *msp) goto err; =20 } - bit =3D bit_alloc(); - bit->magic =3D magic; + version =3D magic & 0xff; + if (version =3D=3D SUPPORTED_VERSION) { + bit =3D bit_alloc(); + bit->magic =3D magic; =20 - ret =3D read_one_bit(pci->fd, bit, 1, &pci->fdblock); - if (ret) - goto err; + ret =3D read_one_bit(pci->fd, bit, 1, &pci->fdblock); + if (ret) + goto err; =20 - if (verify_trace(bit)) - goto err; + if (verify_trace(bit)) + goto err; =20 - if (bit->cpu !=3D pci->cpu) { - fprintf(stderr, "cpu %d trace info has error cpu %d\n", - pci->cpu, bit->cpu); - continue; - } + if (bit->cpu !=3D pci->cpu) { + fprintf(stderr, + "cpu %d trace info has error cpu %d\n", + pci->cpu, bit->cpu); + continue; + } =20 - if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && (bit->action & ~__BLK_TN_= CGROUP) !=3D BLK_TN_MESSAGE) { - handle_notify(bit); - output_binary(bit, sizeof(*bit) + bit->pdu_len); - bit_free(bit); - bit =3D NULL; + if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && + (bit->action & ~__BLK_TN_CGROUP) !=3D BLK_TN_MESSAGE) { + handle_notify(bit); + output_binary(bit, sizeof(*bit) + bit->pdu_len); + bit_free(bit); + bit =3D NULL; =20 - i -=3D 1; - continue; - } + i -=3D 1; + continue; + } =20 - if (bit->time > pdi->last_read_time) - pdi->last_read_time =3D bit->time; + if (bit->time > pdi->last_read_time) + pdi->last_read_time =3D bit->time; =20 - t =3D t_alloc(); - memset(t, 0, sizeof(*t)); - t->bit =3D bit; + t =3D t_alloc(); + memset(t, 0, sizeof(*t)); + t->bit =3D bit; =20 - if (msp->first =3D=3D NULL) - msp->first =3D msp->last =3D t; - else { - msp->last->next =3D t; - msp->last =3D t; + if (msp->first =3D=3D NULL) + msp->first =3D msp->last =3D t; + else { + msp->last->next =3D t; + msp->last =3D t; + } + } else { + fprintf(stderr, "unsupported version %d\n", version); + continue; } - ndone++; bit =3D NULL; } --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3CB4314B96; Thu, 25 Sep 2025 15:05:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812722; cv=none; b=HLeJKNeVMjlkO6ca+zkm9YHc7qlTQ45jQbmN4L86Y/eHgCw0vVpIO9eBl83poGbPgf/Q9DjGftQlmA02tr3WrbXVLxpxMolnas5JJw1gRmUdXvB2O3r0jHCFYkMPl6keSkiFM+tSMP8R5Y0gAIkTXPS4xZviqyPyf3AOQUam7aE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812722; c=relaxed/simple; bh=nrVNfhwCQTLkgVxk9oq1vWA9GizwOPAGrwaJjZXIj0A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jyeOXdosOtSjg5q8MSMYL7XYwpil6Fwbg24A0d4YtuQRfz8t0j54StAZJGG1oP/gdfpDEseE5vp0UkJC3UtLgoAdbYgOXDu4PPwH+odT9gvt3alC8RoGByqm6rtA4+DRJVXWAXLB3DCJVkeid1qCIIgvFabTnTFZ85JCWpeLXSc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=H53h2O8t; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="H53h2O8t" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812720; x=1790348720; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nrVNfhwCQTLkgVxk9oq1vWA9GizwOPAGrwaJjZXIj0A=; b=H53h2O8tq1hkWxDcmh3ebVkmbp3lTiXypGXowOnof9L1W10pg66e6Y8/ RZsXLojuOJBrjM7PvR7Z15kZuMx9Mhc7JRF6b5GoIg1ixblkSdXLg8qWL xZjpa1J7W15vDCUoj5TX7yiBLKwRQu3QYw+g6iNfQ5yj212nDDZogfGAi Wd/7sVi+nXOtimnOOJbwgT31e9QXWuvaDfOSIh03qHup0yRUxKOWFGRdy sEPEajQ64TMh8Ji1q47Ww1uVbo6YB/IzaHr3214KXl2ovrVLt83JncdX7 /HDJaBi0IcPKbBibZrXPWPckA9miHIKwsOfIdi2+zkKBPaBTf3EzUih/f g==; X-CSE-ConnectionGUID: MWfd0beOSbaTTd68KjFWIw== X-CSE-MsgGUID: Wu5ELZHcRlSND82HQwRnmQ== X-Ironport-Invalid-End-Of-Message: True X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349092" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:20 +0800 IronPort-SDR: 68d55a30_Q4k9vEOUxLgiqAaF6etfwlvs/YQIEufTWrbO78fXx4i5Rn6 OXp/9gtmmtBgpsFRE/C1rjXlYsHusLgOOeBUmYA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:20 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:17 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 11/22] blkparse: make get_pdulen() take the pdu_len Date: Thu, 25 Sep 2025 17:04:16 +0200 Message-ID: <20250925150427.67394-12-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Directly pass in the pdu_len into get_pdulen() and only care about the byte swapping in get_pdulen(). This enables us to use the function for different versions of the protocol. Signed-off-by: Johannes Thumshirn --- blkparse.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/blkparse.c b/blkparse.c index 163da73..0402e81 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2412,12 +2412,12 @@ static int read_data(int fd, void *buffer, int byte= s, int block, int *fdblock) return 0; } =20 -static inline __u16 get_pdulen(struct blk_io_trace *bit) +static inline __u16 get_pdulen(__u16 pdu_len) { if (data_is_native) - return bit->pdu_len; + return pdu_len; =20 - return __bswap_16(bit->pdu_len); + return __bswap_16(pdu_len); } =20 static inline __u32 get_magic(__u32 magic) @@ -2439,7 +2439,7 @@ static int read_one_bit(int fd, struct blk_io_trace *= bit, int block, if (ret) return ret; =20 - pdu_len =3D get_pdulen(bit); + pdu_len =3D get_pdulen(bit->pdu_len); if (pdu_len) { void *ptr =3D realloc(bit, sizeof(*bit) + pdu_len); =20 --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A4242FFFBC; Thu, 25 Sep 2025 15:05:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812729; cv=none; b=lDGcWDLMWBBU2sZ/jRmK23/bnpAHKdjiWKrjSpuCkC2P9mkUKE3Y3s+KtbUh4viLa1CebQkVIIJ2XJNJoc8NUsS0NtE2kP2FovbVYKMEWQhnzQsUcb1DmK+q5sQu6KDUC3VxgniaS8zDMEIvfatQ9ueys2WyBmEmhfH9uwaKg3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812729; c=relaxed/simple; bh=7x/8BV1VwYtiCopSTQrOJDK3TC6H2EX5xtil7lp16lM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ur54r5J0CsCF2m8Avchroof/lPANlflUlbcTf9zbziVjwsVmn/kM9S1StJ1vTY2gxGvHfoEOGyG+yWQcY4AheZrR7I+WurMa11Bt3OJ4vhm67eJUmNHK6tJb7iVDamT0Tyclv90MPVBVDDxcw0snPPHOQzsnPCuPWqI9NnUQaEs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=igTyGsoY; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="igTyGsoY" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812727; x=1790348727; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7x/8BV1VwYtiCopSTQrOJDK3TC6H2EX5xtil7lp16lM=; b=igTyGsoYDoN868rBu06/wgziuyPtFGnCL0H6UJtmshcS5Ts65AWHRqAn u5EwLLTD9dkA3XnL2PM+MfriAhdnGcMhH98ivFhO7azDFeexSbolq629v 9Xmk2UTaGJjLbVDreFP4HJIG/XKY+r2kWngX8XAowar0onelX520Of1KM sdpIxUZHd3Tp9DNH0Lq0rKcbSbndGNUtM3U1bLK3tPWolusVpZy//+8B6 02c51U8u1IQex54lHWsAjlnBHh7FUsCiCFLv9cSkJPLKAJPgQjaod9vqu It4rVssrN0K9oTLbeKb7D1U0Gabx2xeogs/r5Kp18OUkVj8LJopWrQUFN A==; X-CSE-ConnectionGUID: mlemonTpSIqBVji+7tT3Cw== X-CSE-MsgGUID: 9TqwqN/uSOyNq1T4JmBnIA== X-Ironport-Invalid-End-Of-Message: True X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349156" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:24 +0800 IronPort-SDR: 68d55a34_myXyFOCM/XMWb8kc68vzIKEPH3ww/JX5k7+Xsed9AQryGT2 +8uAnEvFL1tKaeqgZHxf7apfTBKcjR12vNSu3Mg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:25 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:21 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 12/22] blkiomon: read 'magic' first Date: Thu, 25 Sep 2025 17:04:17 +0200 Message-ID: <20250925150427.67394-13-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Similar to blkparse, read the 'magic' portion of 'struct blk_io_trace' first when reading the trace. This is a preparation of supporting multiple trace protocol versions. Signed-off-by: Johannes Thumshirn --- blkiomon.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/blkiomon.c b/blkiomon.c index f8b0c9d..05f2d00 100644 --- a/blkiomon.c +++ b/blkiomon.c @@ -460,19 +460,28 @@ static int blkiomon_do_fifo(void) bit =3D &t->bit; =20 while (up) { + __u32 magic; + + if (fread(&magic, sizeof(magic), 1, ifp) !=3D 1) { + if (!feof(ifp)) + fprintf(stderr, + "blkiomon: could not read trace"); + break; + } if (fread(bit, sizeof(*bit), 1, ifp) !=3D 1) { if (!feof(ifp)) fprintf(stderr, "blkiomon: could not read trace"); break; } + bit->magic =3D magic; if (ferror(ifp)) { clearerr(ifp); fprintf(stderr, "blkiomon: error while reading trace"); break; } =20 - if (data_is_native =3D=3D -1 && check_data_endianness(bit->magic)) { + if (data_is_native =3D=3D -1 && check_data_endianness(magic)) { fprintf(stderr, "blkiomon: endianess problem\n"); break; } --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6219A315D5E; Thu, 25 Sep 2025 15:05:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812730; cv=none; b=ksyjHfjGX0qHkrnU2BYgqBZ5HiWGnzfnsj12C17uCGT6IgNsqv613LdBiN1Nh2jwQJ9sJp2VAnydn9Jw+ZnJpa1wve5Bk2jZyj5zgdCUYSnvC+6/IogHgmiIfPilXzsQ6IAcimcXN2XBfekLQaLON3GlxEmMNOin3ea5LYFZjwg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812730; c=relaxed/simple; bh=3oS1kgcAgXjp0aHkhvXj8mPE9QIVrKKYTq1StaQgUmk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mmyU+D/EV6Dz4lidQ1fLw8MiDjRl9I3hLcnmG8QkaL/C468lB3d/f6zHLW3CI2xqrZi7QyzTIbf0wh9nVDT9rHZQne7MJHyPnnxUtHmL0y7rZFzlxunHzfidOB7lhyv14B+ydM+CbKwVVbw7qe47RqHTQhSv+1Buwt+Em5lKb+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=AmfS68eA; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="AmfS68eA" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812729; x=1790348729; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3oS1kgcAgXjp0aHkhvXj8mPE9QIVrKKYTq1StaQgUmk=; b=AmfS68eAF4dpOfP0vNeWghk4+SgLVJsUa9vMddMbj01K3CeJq8DOaezT vAtr3JMv0SA+JWq94mD4ZshL/b7UmiZnJzUZ/ZCLcn2nmzUePrydn9/3s fH+f80fq+5zx8jF0m4C7t1Ni9Or6uYcNND2C+gsSHvqScb1kgZeDPHpcq +jjuNY5+VXdTe+Bsd//6JWUxxj0St9XIhn8ErV9DvWM/6qk8W12k1e3hn CAxKdiVFjn4zlzhFFM6TEoOMO4ZwOYr4KBT+lZe809EzQSzuqkGrCEt7e cSPAlh16e4A1uy/ZjJGoy7IBC/K1gG50fDby6KFYfVgQmInPaSzjBuguW A==; X-CSE-ConnectionGUID: NHC+JBhBRh2S9dzfMSLQ7g== X-CSE-MsgGUID: dUXlX1NMRomcVn89f1GltA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349192" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:28 +0800 IronPort-SDR: 68d55a39_jrFYughe2AsfsWDuucg0pGckjgxxX+/WNXHHfluxxhsDwx0 SHQ2o5Dr9Yw/WNqtr3mvybqXruuKcELa3fKqEwA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:29 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:26 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 13/22] blktrace: pass magic to CHECK_MAGIC macro Date: Thu, 25 Sep 2025 17:04:18 +0200 Message-ID: <20250925150427.67394-14-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Pass only the magic number itself to the CHECK_MAGIC() macro. This enables support for multiple versions. Signed-off-by: Johannes Thumshirn --- blkrawverify.c | 2 +- blktrace.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blkrawverify.c b/blkrawverify.c index 9c5d595..cc5b06e 100644 --- a/blkrawverify.c +++ b/blkrawverify.c @@ -183,7 +183,7 @@ static int process(FILE **fp, char *devname, char *file= , unsigned int cpu) =20 trace_to_cpu(bit); =20 - if (!CHECK_MAGIC(bit)) { + if (!CHECK_MAGIC(bit->magic)) { INC_BAD("bad trace"); continue; } diff --git a/blktrace.h b/blktrace.h index 3305fa0..81a5b51 100644 --- a/blktrace.h +++ b/blktrace.h @@ -67,7 +67,7 @@ extern FILE *ofp; extern int data_is_native; extern struct timespec abs_start_time; =20 -#define CHECK_MAGIC(t) (((t)->magic & 0xffffff00) =3D=3D BLK_IO_TRACE_MAG= IC) +#define CHECK_MAGIC(magic) (((magic) & 0xffffff00) =3D=3D BLK_IO_TRACE_MA= GIC) #define SUPPORTED_VERSION (0x07) #define SUPPORTED_VERSION2 (0x08) =20 @@ -93,7 +93,7 @@ static inline int verify_trace(struct blk_io_trace *t) { u8 version; =20 - if (!CHECK_MAGIC(t)) { + if (!CHECK_MAGIC(t->magic)) { fprintf(stderr, "bad trace magic %x\n", t->magic); return 1; } --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93D673191C8; Thu, 25 Sep 2025 15:05:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812735; cv=none; b=W3TWNA8vbN+BIHsk6Pz91kmyuwzLgbbAnLFpOxxXTXQ2FU/FKFoywSQtts+WVUzsdWKsb7XJdff8DKFI1Sbd8vyMMlISI1vRpRY4ea5IXZNbGu6kCXGqx+NFhJf1V45V5X29/7SP8qC5wlzomA6i0CRsMNGv0M1Do7G7BfU3Tvo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812735; c=relaxed/simple; bh=ahbQzVYzmBGcgTtig5YmAZ5t6E/5eYzq5jKvFA9hLeo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EZuMzlNSDuw/Seo8L8Ks4DnAJPc/nhtnQkxnscN/CXpbfKPFG7I8sbhXV9gHFdKpE6rLxLFuMWyyhRVl/hnNvH6Fvg00J2Tu3/T6C2pWE8QpcWAi7LKClU3Q66UCValhAGlARegMM3rBl86yZ+GiaaSq/yrOmJLU4XEwCoFmQeo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=gVFK/Q93; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="gVFK/Q93" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812733; x=1790348733; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ahbQzVYzmBGcgTtig5YmAZ5t6E/5eYzq5jKvFA9hLeo=; b=gVFK/Q938Tiwe1b/quj3kr7Qyz5tpjWjBgXGySaID4qzn49uE6k2wG09 bpJHQif5VRWYvvRSkfLWfalUj51EV+Ce8Kzxjc2Dkg6aduahGXmE8zB6A i27z2plFi2n9qwA8UoaXrAC4BqKzeG7nxkoISIIanyzjcC7i0xGmZt/J1 bshjOvKh8LuVkmHKQhn21Un+9AJyyhvj5o6Z1COzz3vb7Xkx08vufjsMJ op9BJ8G6VCYR83mchxN95v2+tmtnApk0MoqQsgVSKKXh0Sn3NSscxrLC7 mCyp5wnOK/KGj5Ah1lHm3tV7MR+dajKhJiCZqSiNTodTc/y/nyDN6M2/V g==; X-CSE-ConnectionGUID: lBzDbOhRRrWR2VPyVh+sJg== X-CSE-MsgGUID: HuUgqaDyS9yIlmj3ac0NaQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349241" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:33 +0800 IronPort-SDR: 68d55a3d_RKXNpQoDbmUgqY3GFMi12JeErpYaS7cUQ/ljDlk7uJT3ME1 Hg0FQOw4CtB46sXGTqy2X6TyMJAHFQ1VZ5p0wOw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:33 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:30 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 14/22] blktrace: pass magic to verify_trace Date: Thu, 25 Sep 2025 17:04:19 +0200 Message-ID: <20250925150427.67394-15-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Pass magic to verify_trace(), this will enable verification of multiple supported versions. Singed-off-by: Johannes Thumshirn --- blkiomon.c | 2 +- blkparse.c | 4 ++-- blktrace.h | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/blkiomon.c b/blkiomon.c index 05f2d00..373947e 100644 --- a/blkiomon.c +++ b/blkiomon.c @@ -488,7 +488,7 @@ static int blkiomon_do_fifo(void) =20 /* endianess */ trace_to_cpu(bit); - if (verify_trace(bit)) { + if (verify_trace(bit->magic)) { fprintf(stderr, "blkiomon: bad trace\n"); break; } diff --git a/blkparse.c b/blkparse.c index 0402e81..9065330 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2509,7 +2509,7 @@ static int read_events(int fd, int always_block, int = *fdblock) continue; } =20 - if (verify_trace(bit)) { + if (verify_trace(bit->magic)) { bit_free(bit); bit =3D NULL; continue; @@ -2649,7 +2649,7 @@ static int ms_prime(struct ms_stream *msp) if (ret) goto err; =20 - if (verify_trace(bit)) + if (verify_trace(bit->magic)) goto err; =20 if (bit->cpu !=3D pci->cpu) { diff --git a/blktrace.h b/blktrace.h index 81a5b51..68c67f2 100644 --- a/blktrace.h +++ b/blktrace.h @@ -89,16 +89,16 @@ extern struct timespec abs_start_time; #error "Bad arch" #endif =20 -static inline int verify_trace(struct blk_io_trace *t) +static inline int verify_trace(__u32 magic) { u8 version; =20 - if (!CHECK_MAGIC(t->magic)) { - fprintf(stderr, "bad trace magic %x\n", t->magic); + if (!CHECK_MAGIC(magic)) { + fprintf(stderr, "bad trace magic %x\n", magic); return 1; } =20 - version =3D t->magic & 0xff; + version =3D magic & 0xff; if (version !=3D SUPPORTED_VERSION && version !=3D SUPPORTED_VERSION2) { fprintf(stderr, "unsupported trace version %x\n", version); --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C968531A06A; Thu, 25 Sep 2025 15:05:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812740; cv=none; b=IrC3SgUrSciXs+rvcNkVreTIrST6SC+J8tcDVej/AsbARfgI2VPJhz7WTExbgmvAkhVWFtn04mAkUjxBa36d06Ti5EnSok/8FebdwJrNBX6uqNXgueG3MsEZpt5An+B8SRFJG5WfRBNNiLuBCkSr8/sMgbPJsgM7e1Ma5sn0B+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812740; c=relaxed/simple; bh=dnN2KHhWPoTWDTwcp7qpeQ3vd4h7ztKe0w6q2T21s34=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XDyff/QzlLcXDNq/TAqYu5pSxulW+9X9Ab0GnuldBJJ/ZctKde77PT+kapM5MK2QQTSnqrTTxyTRIcK+WqGFlWvsf1zCyszwW0LqYnN9T9F8e8xkOGUZZ5iN//Y3l5TQRm+4n2Wnv2J4GHqUlkR/3vSQASVlHqG46apwQCsiEN4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=pW6q6SJg; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="pW6q6SJg" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812738; x=1790348738; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dnN2KHhWPoTWDTwcp7qpeQ3vd4h7ztKe0w6q2T21s34=; b=pW6q6SJgsLys+TzWRxo1yBt/7+o0o0F+JPCVmUmDzLuir8QT7hji0Me7 oPjACnibFgGmL/sf6AdOXq/Clo3lP9rxOjqMFP1tIM/LjZcOf/ilqviOd OYxxyHC32omdUFjSm+pnLDVtgBL9fvBoW9Np4PCPOjlKF+LVkRR5Pd8Um n07CJZvESiFTAii0+NbeaQ/mOPVfWgyVishohUujY/9i7VIBM1P4QZIaC Z6Ma3GAutzyT+O+1DiweQLJdsttZXToW/SKC7hacKqNOPpvoiwJneAnbe OSJGTH9fsI56q/zdrX+Uu3WNaR2NSJuuF1QxHisSg00FBblvMv+/YIvLR Q==; X-CSE-ConnectionGUID: LtgENWZFQWCFTS8cxPI09A== X-CSE-MsgGUID: Mql7HflCSiCio+/QkD7Jgg== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349316" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:37 +0800 IronPort-SDR: 68d55a41_UULpGNAlmtr3akeU6zkyxD9LEa0dAsfB5kL81VICDJaZVeb 50xY84/U2WTbH49NdWIiOG5PHzMCf+KuO8wWghA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:37 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:34 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 15/22] blktrace: rename trace_to_cpu to bit_trace_to_cpu Date: Thu, 25 Sep 2025 17:04:20 +0200 Message-ID: <20250925150427.67394-16-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Signed-off-by: Johannes Thumshirn --- blkiomon.c | 2 +- blkparse.c | 2 +- blkrawverify.c | 2 +- blktrace.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/blkiomon.c b/blkiomon.c index 373947e..9defa2c 100644 --- a/blkiomon.c +++ b/blkiomon.c @@ -487,7 +487,7 @@ static int blkiomon_do_fifo(void) } =20 /* endianess */ - trace_to_cpu(bit); + bit_trace_to_cpu(bit); if (verify_trace(bit->magic)) { fprintf(stderr, "blkiomon: bad trace\n"); break; diff --git a/blkparse.c b/blkparse.c index 9065330..6396611 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2451,7 +2451,7 @@ static int read_one_bit(int fd, struct blk_io_trace *= bit, int block, bit =3D ptr; } =20 - trace_to_cpu(bit); + bit_trace_to_cpu(bit); =20 return 0; } diff --git a/blkrawverify.c b/blkrawverify.c index cc5b06e..8e863cb 100644 --- a/blkrawverify.c +++ b/blkrawverify.c @@ -181,7 +181,7 @@ static int process(FILE **fp, char *devname, char *file= , unsigned int cpu) if (data_is_native =3D=3D -1) check_data_endianness(bit->magic); =20 - trace_to_cpu(bit); + bit_trace_to_cpu(bit); =20 if (!CHECK_MAGIC(bit->magic)) { INC_BAD("bad trace"); diff --git a/blktrace.h b/blktrace.h index 68c67f2..08ac28b 100644 --- a/blktrace.h +++ b/blktrace.h @@ -108,7 +108,7 @@ static inline int verify_trace(__u32 magic) return 0; } =20 -static inline void trace_to_cpu(struct blk_io_trace *t) +static inline void bit_trace_to_cpu(struct blk_io_trace *t) { if (data_is_native) return; --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D80A31B10B; Thu, 25 Sep 2025 15:05:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812744; cv=none; b=BL1se/h7SSiUK5F7A2Qu0o6wa1+TE8v0h/AcaypBcjWpywwZsb5nD0uef666DHD03VUhuZ1aLPm3NChYq0ImnVnwMkZZOH2OP9eb+rPE+m5oiDMl0NM+WcSLmUaw6JO8d7kpncHCXB546w501jJk0rLYKG16iv59Z/J8M7QS1VQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812744; c=relaxed/simple; bh=6X+2xPvvoMuMNMDivSf9y9c6nTZvfXkeZsioLX0X17Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dtNFsbysIbsZZQ3c00ySeeAxJwdqQWS3fXk6LZ+AegY9osogxYiUxn/qXTHZH9uW6+G28nDbQaZAUyzC5PNs1HlRgbe/135ngXfR/Kso46DzFclc2/ALLCWI1ojZom/W/OOJLwkZd9Qo4hFGmG5T1o3I0aOghUCMPyJSXEd3JWs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=S7ZbOpnZ; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="S7ZbOpnZ" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812741; x=1790348741; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6X+2xPvvoMuMNMDivSf9y9c6nTZvfXkeZsioLX0X17Q=; b=S7ZbOpnZFI3CFC4tESbEMQUtWHbhllttw04LZwPt/jd9P6PFB5gE8i+x 8pzJ+TwgqmKYu8HhVdH2hd9R2SpScFqxX7IEA+QdVWtnjFi6k6H9OUTxC KI/TCXg4JK7KkV65h9+bxj37FkPCTkx5RxqJFA2Cwvu282vi5dJduxncp +AArrJAus2swoXvuD9O81cH1uc4KSEmEa2OaxYEPI5YnwU1Mie89B2I/0 M8VRjc8upEFluBN71zIxrt6ckI23eQWrelHvojxvMp9aP4RnR1vzrgvkb BtFQ9iilYI9p5zy5Gl3kRlfYc9jIHjS7GAkZKvaUyLjwF/veDpFWDJyWL g==; X-CSE-ConnectionGUID: iwci3smtSpWGsmYD/IlJRg== X-CSE-MsgGUID: 9tJROEHUTpq5rZUkVdBDAA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349405" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:41 +0800 IronPort-SDR: 68d55a45_s15REnVaqAEwtjij1o1kY/3/qjBzarTujb25Ch73hhkVNgl TkIe49QM2eeiyIzwAsP4NUqYoGUL9jQPTOmDsQw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:42 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:38 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 16/22] blkparse: use blk_io_trace2 internally Date: Thu, 25 Sep 2025 17:04:21 +0200 Message-ID: <20250925150427.67394-17-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Use 'struct blk_io_trace2' as internal representation for a captured blktrace. This implies the conversion of 'struct blk_io_trace' into 'struct blk_io_trace2' when reading the trace from the binary file. Signed-off-by: Johannes Thumshirn --- blkparse.c | 131 +++++++++++++++++++++++++++---------------------- blkparse_fmt.c | 16 +++--- blktrace.h | 23 ++++++++- 3 files changed, 103 insertions(+), 67 deletions(-) diff --git a/blkparse.c b/blkparse.c index 6396611..7100009 100644 --- a/blkparse.c +++ b/blkparse.c @@ -243,7 +243,7 @@ static struct option l_opts[] =3D { * for sorting the displayed output */ struct trace { - struct blk_io_trace *bit; + struct blk_io_trace2 *bit; struct rb_node rb_node; struct trace *next; unsigned long read_sequence; @@ -257,7 +257,7 @@ static struct trace *trace_list; /* * allocation cache */ -static struct blk_io_trace *bit_alloc_list; +static struct blk_io_trace2 *bit_alloc_list; static struct trace *t_alloc_list; =20 /* @@ -332,7 +332,7 @@ static int have_drv_data =3D 0; #define CPU_IDX(cpu) ((cpu) / CPUS_PER_LONG) #define CPU_BIT(cpu) ((cpu) & (CPUS_PER_LONG - 1)) =20 -static void io_warn_unless(struct blk_io_trace *t, int condition, +static void io_warn_unless(struct blk_io_trace2 *t, int condition, const char *fmt, ...) { va_list ap; @@ -613,7 +613,7 @@ static struct process_pid_map *add_ppm_hash(pid_t pid, = const char *name) return ppm; } =20 -static void handle_notify(struct blk_io_trace *bit) +static void handle_notify(struct blk_io_trace2 *bit) { void *payload =3D (caddr_t) bit + sizeof(*bit); __u32 two32[2]; @@ -802,25 +802,25 @@ static inline struct trace *t_alloc(void) return malloc(sizeof(*t)); } =20 -static inline void bit_free(struct blk_io_trace *bit) +static inline void bit_free(struct blk_io_trace2 *bit) { if (bit_alloc_cache < 1024 && !bit->pdu_len) { /* * abuse a 64-bit field for a next pointer for the free item */ bit->time =3D (__u64) (unsigned long) bit_alloc_list; - bit_alloc_list =3D (struct blk_io_trace *) bit; + bit_alloc_list =3D (struct blk_io_trace2 *) bit; bit_alloc_cache++; } else free(bit); } =20 -static inline struct blk_io_trace *bit_alloc(void) +static inline struct blk_io_trace2 *bit_alloc(void) { - struct blk_io_trace *bit =3D bit_alloc_list; + struct blk_io_trace2 *bit =3D bit_alloc_list; =20 if (bit) { - bit_alloc_list =3D (struct blk_io_trace *) (unsigned long) \ + bit_alloc_list =3D (struct blk_io_trace2 *) (unsigned long) \ bit->time; bit_alloc_cache--; return bit; @@ -1041,7 +1041,7 @@ static struct io_track *find_track(struct per_dev_inf= o *pdi, pid_t pid, } =20 static void log_track_frontmerge(struct per_dev_info *pdi, - struct blk_io_trace *t) + struct blk_io_trace2 *t) { struct io_track *iot; =20 @@ -1062,7 +1062,7 @@ static void log_track_frontmerge(struct per_dev_info = *pdi, track_rb_insert(pdi, iot); } =20 -static void log_track_getrq(struct per_dev_info *pdi, struct blk_io_trace = *t) +static void log_track_getrq(struct per_dev_info *pdi, struct blk_io_trace2= *t) { struct io_track *iot; struct io_track_req *req; @@ -1081,7 +1081,7 @@ static void log_track_getrq(struct per_dev_info *pdi,= struct blk_io_trace *t) * for md/dm setups, the interesting cycle is Q -> C. So track queueing * time here, as dispatch time */ -static void log_track_queue(struct per_dev_info *pdi, struct blk_io_trace = *t) +static void log_track_queue(struct per_dev_info *pdi, struct blk_io_trace2= *t) { struct io_track *iot; struct io_track_req *req; @@ -1096,7 +1096,7 @@ static void log_track_queue(struct per_dev_info *pdi,= struct blk_io_trace *t) req->dispatch_time =3D t->time; } =20 -static void log_track_split(struct per_dev_info *pdi, struct blk_io_trace = *t) +static void log_track_split(struct per_dev_info *pdi, struct blk_io_trace2= *t) { struct io_track *iot, *split; =20 @@ -1118,7 +1118,7 @@ static void log_track_split(struct per_dev_info *pdi,= struct blk_io_trace *t) * return time between rq allocation and insertion */ static unsigned long long log_track_insert(struct per_dev_info *pdi, - struct blk_io_trace *t) + struct blk_io_trace2 *t) { unsigned long long elapsed; struct io_track *iot; @@ -1153,7 +1153,7 @@ static unsigned long long log_track_insert(struct per= _dev_info *pdi, * return time between queue and issue */ static unsigned long long log_track_issue(struct per_dev_info *pdi, - struct blk_io_trace *t) + struct blk_io_trace2 *t) { unsigned long long elapsed =3D -1ULL; struct io_track *iot; @@ -1191,7 +1191,7 @@ static unsigned long long log_track_issue(struct per_= dev_info *pdi, return elapsed; } =20 -static void fixup_complete(struct per_dev_info *pdi, struct blk_io_trace *= t) +static void fixup_complete(struct per_dev_info *pdi, struct blk_io_trace2 = *t) { struct io_track *iot; __u64 start_sector; @@ -1214,7 +1214,7 @@ static void fixup_complete(struct per_dev_info *pdi, = struct blk_io_trace *t) * return time between dispatch and complete */ static unsigned long long log_track_complete(struct per_dev_info *pdi, - struct blk_io_trace *t) + struct blk_io_trace2 *t) { unsigned long long elapsed =3D -1ULL; struct io_track *iot, *next; @@ -1288,7 +1288,7 @@ static char *get_dev_name(struct per_dev_info *pdi, c= har *buffer, int size) return buffer; } =20 -static void check_time(struct per_dev_info *pdi, struct blk_io_trace *bit) +static void check_time(struct per_dev_info *pdi, struct blk_io_trace2 *bit) { unsigned long long this =3D bit->time; unsigned long long last =3D pdi->last_reported_time; @@ -1297,7 +1297,7 @@ static void check_time(struct per_dev_info *pdi, stru= ct blk_io_trace *bit) pdi->last_reported_time =3D this; } =20 -static inline void __account_m(struct io_stats *ios, struct blk_io_trace *= t, +static inline void __account_m(struct io_stats *ios, struct blk_io_trace2 = *t, int rw) { if (rw) { @@ -1311,7 +1311,7 @@ static inline void __account_m(struct io_stats *ios, = struct blk_io_trace *t, } } =20 -static inline void account_m(struct blk_io_trace *t, struct per_cpu_info *= pci, +static inline void account_m(struct blk_io_trace2 *t, struct per_cpu_info = *pci, int rw) { __account_m(&pci->io_stats, t, rw); @@ -1324,7 +1324,7 @@ static inline void account_m(struct blk_io_trace *t, = struct per_cpu_info *pci, } =20 static inline void __account_pc_queue(struct io_stats *ios, - struct blk_io_trace *t, int rw) + struct blk_io_trace2 *t, int rw) { if (rw) { ios->qwrites_pc++; @@ -1337,7 +1337,7 @@ static inline void __account_pc_queue(struct io_stats= *ios, } } =20 -static inline void account_pc_queue(struct blk_io_trace *t, +static inline void account_pc_queue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_pc_queue(&pci->io_stats, t, rw); @@ -1363,7 +1363,7 @@ static inline void __account_pc_issue(struct io_stats= *ios, int rw, } } =20 -static inline void account_pc_issue(struct blk_io_trace *t, +static inline void account_pc_issue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_pc_issue(&pci->io_stats, rw, t->bytes); @@ -1376,7 +1376,7 @@ static inline void account_pc_issue(struct blk_io_tra= ce *t, } =20 static inline void __account_pc_requeue(struct io_stats *ios, - struct blk_io_trace *t, int rw) + struct blk_io_trace2 *t, int rw) { if (rw) { ios->wrqueue_pc++; @@ -1389,7 +1389,7 @@ static inline void __account_pc_requeue(struct io_sta= ts *ios, } } =20 -static inline void account_pc_requeue(struct blk_io_trace *t, +static inline void account_pc_requeue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_pc_requeue(&pci->io_stats, t, rw); @@ -1409,7 +1409,7 @@ static inline void __account_pc_c(struct io_stats *io= s, int rw) ios->creads_pc++; } =20 -static inline void account_pc_c(struct blk_io_trace *t, +static inline void account_pc_c(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_pc_c(&pci->io_stats, rw); @@ -1421,7 +1421,7 @@ static inline void account_pc_c(struct blk_io_trace *= t, } } =20 -static inline void __account_queue(struct io_stats *ios, struct blk_io_tra= ce *t, +static inline void __account_queue(struct io_stats *ios, struct blk_io_tra= ce2 *t, int rw) { if (rw) { @@ -1435,7 +1435,7 @@ static inline void __account_queue(struct io_stats *i= os, struct blk_io_trace *t, } } =20 -static inline void account_queue(struct blk_io_trace *t, +static inline void account_queue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_queue(&pci->io_stats, t, rw); @@ -1460,7 +1460,7 @@ static inline void __account_c(struct io_stats *ios, = int rw, int bytes) } } =20 -static inline void account_c(struct blk_io_trace *t, struct per_cpu_info *= pci, +static inline void account_c(struct blk_io_trace2 *t, struct per_cpu_info = *pci, int rw, int bytes) { __account_c(&pci->io_stats, rw, bytes); @@ -1486,7 +1486,7 @@ static inline void __account_issue(struct io_stats *i= os, int rw, } } =20 -static inline void account_issue(struct blk_io_trace *t, +static inline void account_issue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_issue(&pci->io_stats, rw, t->bytes); @@ -1506,7 +1506,7 @@ static inline void __account_unplug(struct io_stats *= ios, int timer) ios->io_unplugs++; } =20 -static inline void account_unplug(struct blk_io_trace *t, +static inline void account_unplug(struct blk_io_trace2 *t, struct per_cpu_info *pci, int timer) { __account_unplug(&pci->io_stats, timer); @@ -1519,7 +1519,7 @@ static inline void account_unplug(struct blk_io_trace= *t, } =20 static inline void __account_requeue(struct io_stats *ios, - struct blk_io_trace *t, int rw) + struct blk_io_trace2 *t, int rw) { if (rw) { ios->wrqueue++; @@ -1532,7 +1532,7 @@ static inline void __account_requeue(struct io_stats = *ios, } } =20 -static inline void account_requeue(struct blk_io_trace *t, +static inline void account_requeue(struct blk_io_trace2 *t, struct per_cpu_info *pci, int rw) { __account_requeue(&pci->io_stats, t, rw); @@ -1545,31 +1545,31 @@ static inline void account_requeue(struct blk_io_tr= ace *t, } =20 static void log_complete(struct per_dev_info *pdi, struct per_cpu_info *pc= i, - struct blk_io_trace *t, char *act) + struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, log_track_complete(pdi, t), 0, NULL); } =20 static void log_insert(struct per_dev_info *pdi, struct per_cpu_info *pci, - struct blk_io_trace *t, char *act) + struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, log_track_insert(pdi, t), 0, NULL); } =20 -static void log_queue(struct per_cpu_info *pci, struct blk_io_trace *t, +static void log_queue(struct per_cpu_info *pci, struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, -1, 0, NULL); } =20 static void log_issue(struct per_dev_info *pdi, struct per_cpu_info *pci, - struct blk_io_trace *t, char *act) + struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, log_track_issue(pdi, t), 0, NULL); } =20 static void log_merge(struct per_dev_info *pdi, struct per_cpu_info *pci, - struct blk_io_trace *t, char *act) + struct blk_io_trace2 *t, char *act) { if (act[0] =3D=3D 'F') log_track_frontmerge(pdi, t); @@ -1577,38 +1577,38 @@ static void log_merge(struct per_dev_info *pdi, str= uct per_cpu_info *pci, process_fmt(act, pci, t, -1ULL, 0, NULL); } =20 -static void log_action(struct per_cpu_info *pci, struct blk_io_trace *t, +static void log_action(struct per_cpu_info *pci, struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, -1ULL, 0, NULL); } =20 -static void log_generic(struct per_cpu_info *pci, struct blk_io_trace *t, +static void log_generic(struct per_cpu_info *pci, struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, -1ULL, 0, NULL); } =20 -static void log_unplug(struct per_cpu_info *pci, struct blk_io_trace *t, +static void log_unplug(struct per_cpu_info *pci, struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, -1ULL, 0, NULL); } =20 -static void log_split(struct per_cpu_info *pci, struct blk_io_trace *t, +static void log_split(struct per_cpu_info *pci, struct blk_io_trace2 *t, char *act) { process_fmt(act, pci, t, -1ULL, 0, NULL); } =20 -static void log_pc(struct per_cpu_info *pci, struct blk_io_trace *t, char = *act) +static void log_pc(struct per_cpu_info *pci, struct blk_io_trace2 *t, char= *act) { unsigned char *buf =3D (unsigned char *) t + sizeof(*t); =20 process_fmt(act, pci, t, -1ULL, t->pdu_len, buf); } =20 -static void dump_trace_pc(struct blk_io_trace *t, struct per_dev_info *pdi, +static void dump_trace_pc(struct blk_io_trace2 *t, struct per_dev_info *pd= i, struct per_cpu_info *pci) { int w =3D (t->action & BLK_TC_ACT(BLK_TC_WRITE)) !=3D 0; @@ -1657,7 +1657,7 @@ static void dump_trace_pc(struct blk_io_trace *t, str= uct per_dev_info *pdi, } } =20 -static void dump_trace_fs(struct blk_io_trace *t, struct per_dev_info *pdi, +static void dump_trace_fs(struct blk_io_trace2 *t, struct per_dev_info *pd= i, struct per_cpu_info *pci) { int w =3D (t->action & BLK_TC_ACT(BLK_TC_WRITE)) !=3D 0; @@ -1737,12 +1737,12 @@ static void dump_trace_fs(struct blk_io_trace *t, s= truct per_dev_info *pdi, /* dump to binary file only */ break; default: - fprintf(stderr, "Bad fs action %x\n", t->action); + fprintf(stderr, "Bad fs action %llx\n", t->action); break; } } =20 -static void dump_trace(struct blk_io_trace *t, struct per_cpu_info *pci, +static void dump_trace(struct blk_io_trace2 *t, struct per_cpu_info *pci, struct per_dev_info *pdi) { if (text_output) { @@ -2162,7 +2162,7 @@ static void find_genesis(void) } } =20 -static inline int check_stopwatch(struct blk_io_trace *bit) +static inline int check_stopwatch(struct blk_io_trace2 *bit) { if (bit->time < stopwatch_end && bit->time >=3D stopwatch_start) @@ -2185,7 +2185,7 @@ static int sort_entries(unsigned long long *youngest) =20 *youngest =3D 0; while ((t =3D trace_list) !=3D NULL) { - struct blk_io_trace *bit =3D t->bit; + struct blk_io_trace2 *bit =3D t->bit; =20 trace_list =3D t->next; =20 @@ -2264,7 +2264,7 @@ static int check_cpu_map(struct per_dev_info *pdi) =20 static int check_sequence(struct per_dev_info *pdi, struct trace *t, int f= orce) { - struct blk_io_trace *bit =3D t->bit; + struct blk_io_trace2 *bit =3D t->bit; unsigned long expected_sequence; struct per_cpu_info *pci; struct trace *__t; @@ -2315,7 +2315,7 @@ static void show_entries_rb(int force) { struct per_dev_info *pdi =3D NULL; struct per_cpu_info *pci =3D NULL; - struct blk_io_trace *bit; + struct blk_io_trace2 *bit; struct rb_node *n; struct trace *t; =20 @@ -2428,12 +2428,22 @@ static inline __u32 get_magic(__u32 magic) return __bswap_32(magic); } =20 -static int read_one_bit(int fd, struct blk_io_trace *bit, int block, +static int read_one_bit(int fd, struct blk_io_trace2 **bit2, int block, int *fdblock) { + struct blk_io_trace2 *new =3D *bit2; + struct blk_io_trace *bit; int ret; int pdu_len; - void *p =3D (void *) ((u8 *)bit + sizeof(__u32)); + void *p; + + bit =3D malloc(sizeof(*bit)); + if (!bit) + return -1; + + bit->magic =3D new->magic; + + p =3D (void *) ((u8 *)bit + sizeof(__u32)); =20 ret =3D read_data(fd, p, sizeof(*bit) - sizeof(__u32), block, fdblock); if (ret) @@ -2449,9 +2459,14 @@ static int read_one_bit(int fd, struct blk_io_trace = *bit, int block, return ret; } bit =3D ptr; + + new =3D realloc(*bit2, sizeof(struct blk_io_trace2) + pdu_len); } =20 bit_trace_to_cpu(bit); + bit_to_bit2(bit, new); + free(bit); + *bit2 =3D new; =20 return 0; } @@ -2491,11 +2506,11 @@ static int read_events(int fd, int always_block, in= t *fdblock) } version =3D magic & 0xff; if (version =3D=3D SUPPORTED_VERSION) { - struct blk_io_trace *bit; + struct blk_io_trace2 *bit; bit =3D bit_alloc(); bit->magic =3D magic; =20 - ret =3D read_one_bit(fd, bit, 1, fdblock); + ret =3D read_one_bit(fd, &bit, 1, fdblock); if (ret) break; =20 @@ -2620,7 +2635,7 @@ static int ms_prime(struct ms_stream *msp) struct trace *t; struct per_dev_info *pdi =3D msp->pdi; struct per_cpu_info *pci =3D get_cpu_info(pdi, msp->cpu); - struct blk_io_trace *bit =3D NULL; + struct blk_io_trace2 *bit =3D NULL; int ret, ndone =3D 0; =20 for (i =3D 0; !is_done() && pci->fd >=3D 0 && i < rb_batch; i++) { @@ -2645,7 +2660,7 @@ static int ms_prime(struct ms_stream *msp) bit =3D bit_alloc(); bit->magic =3D magic; =20 - ret =3D read_one_bit(pci->fd, bit, 1, &pci->fdblock); + ret =3D read_one_bit(pci->fd, &bit, 1, &pci->fdblock); if (ret) goto err; =20 @@ -2767,7 +2782,7 @@ static int handle(struct ms_stream *msp) struct trace *t; struct per_dev_info *pdi; struct per_cpu_info *pci; - struct blk_io_trace *bit; + struct blk_io_trace2 *bit; =20 t =3D ms_peek(msp); =20 diff --git a/blkparse_fmt.c b/blkparse_fmt.c index 02c5a3c..f93addb 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -51,7 +51,7 @@ int add_format_spec(char *option) return 0; } =20 -static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t) +static inline void fill_rwbs(char *rwbs, struct blk_io_trace2 *t) { bool w =3D !!(t->action & BLK_TC_ACT(BLK_TC_WRITE)); bool a =3D !!(t->action & BLK_TC_ACT(BLK_TC_AHEAD)); @@ -146,16 +146,16 @@ static char *dump_pdu(unsigned char *pdu_buf, int pdu= _len) return p; } =20 -#define pdu_start(t) (((void *) (t) + sizeof(struct blk_io_trace))) +#define pdu_start(t) (((void *) (t) + sizeof(struct blk_io_trace2))) =20 -static unsigned int get_pdu_int(struct blk_io_trace *t) +static unsigned int get_pdu_int(struct blk_io_trace2 *t) { __u64 *val =3D pdu_start(t); =20 return be64_to_cpu(*val); } =20 -static void get_pdu_remap(struct blk_io_trace *t, struct blk_io_trace_rema= p *r) +static void get_pdu_remap(struct blk_io_trace2 *t, struct blk_io_trace_rem= ap *r) { struct blk_io_trace_remap *__r =3D pdu_start(t); __u64 sector_from =3D __r->sector_from; @@ -166,7 +166,7 @@ static void get_pdu_remap(struct blk_io_trace *t, struc= t blk_io_trace_remap *r) } =20 static void print_field(char *act, struct per_cpu_info *pci, - struct blk_io_trace *t, unsigned long long elapsed, + struct blk_io_trace2 *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf, char field, int minus, int has_w, int width) { @@ -275,7 +275,7 @@ static void print_field(char *act, struct per_cpu_info = *pci, } =20 static char *parse_field(char *act, struct per_cpu_info *pci, - struct blk_io_trace *t, unsigned long long elapsed, + struct blk_io_trace2 *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf, char *primary_format) { @@ -302,7 +302,7 @@ static char *parse_field(char *act, struct per_cpu_info= *pci, } =20 static void process_default(char *act, struct per_cpu_info *pci, - struct blk_io_trace *t, unsigned long long elapsed, + struct blk_io_trace2 *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf) { struct blk_io_trace_remap r =3D { .device_from =3D 0, }; @@ -436,7 +436,7 @@ static void process_default(char *act, struct per_cpu_i= nfo *pci, =20 } =20 -void process_fmt(char *act, struct per_cpu_info *pci, struct blk_io_trace = *t, +void process_fmt(char *act, struct per_cpu_info *pci, struct blk_io_trace2= *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf) { diff --git a/blktrace.h b/blktrace.h index 08ac28b..196b3c9 100644 --- a/blktrace.h +++ b/blktrace.h @@ -6,6 +6,7 @@ #include #include #include +#include =20 #include "blktrace_api.h" #include "rbtree.h" @@ -108,6 +109,26 @@ static inline int verify_trace(__u32 magic) return 0; } =20 +static inline void bit_to_bit2(struct blk_io_trace *old, + struct blk_io_trace2 *new) +{ + new->magic =3D old->magic; + new->sequence =3D old->sequence; + new->time =3D old->time; + new->sector =3D old->sector; + new->bytes =3D old->bytes; + new->action =3D 0 | old->action; + new->pid =3D old->pid; + new->device =3D old->device; + new->cpu =3D old->cpu; + new->error =3D old->error; + new->pdu_len =3D old->pdu_len; + + if (new->pdu_len) + memcpy(((u8 *) new + sizeof(*new)), ((u8 *)old + sizeof(*old)), + old->pdu_len); +} + static inline void bit_trace_to_cpu(struct blk_io_trace *t) { if (data_is_native) @@ -147,7 +168,7 @@ static inline int check_data_endianness(u32 magic) =20 extern void set_all_format_specs(char *); extern int add_format_spec(char *); -extern void process_fmt(char *, struct per_cpu_info *, struct blk_io_trace= *, +extern void process_fmt(char *, struct per_cpu_info *, struct blk_io_trace= 2 *, unsigned long long, int, unsigned char *); extern unsigned long long valid_act_opt(unsigned long long); extern int find_mask_map(char *); --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74F6F306499; Thu, 25 Sep 2025 15:05:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812748; cv=none; b=hVlXN1Xjcde+/sTDrow0XUfc5PU4SEFy9FOED5zAl9ht1suBonNwMzpK8OTM+KcJtL2guTIwCaYhGvK0pl2/8KugLDRp6Wd9a8nyAkoB+/HZiJgxGOPm6ArQA+cB84viuXNmMG0s9lrV0W4LzEhdr2YWnRddlgkpHdk20lyKz/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812748; c=relaxed/simple; bh=NlP9p8yLWcSJahQC+UEL2+MNqHwl4Hkpnif3ssjYDYs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Eef08lvFl6YhqsUKGee45Ww1OzCqG8CpIu+tvqTX0rds4QM3yED8gbSUd9pexmz9nD5Fa/L6O4djGcFQ9NAGXLoRmIE5xaUs9eW8vLHVp7jwlFo++44Y/9NQzirkEfw///3IvonywWdDKMXXgTFpA2RNzS73cd7ytvpGwbgPrbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=JSW2bw1v; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="JSW2bw1v" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812746; x=1790348746; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NlP9p8yLWcSJahQC+UEL2+MNqHwl4Hkpnif3ssjYDYs=; b=JSW2bw1vipMyb6RFb3zZq2/EDEdXgh2quUJjfIM/IMvTFCwywQRVSqtI +B6XszSN9qepj7KUGhJdN72Z+z/gvBRulXjrR4+r89B4yrzOddFyZROVI rvYcg9O8sS5qooU3XvQ97WUubkJwq3Q5igNxTqSdXDu+RpVeW3ZvtQluM Dykpyn1BFOaBPbdLFg+AhCaGxmeyMYfx6byl1dfVjhYTlX1YqjTTSQK7U 9cQJiOGvtewBRH4aXtaeWCxUUYzC2COkzddXVNeZpTt4Vm76pl1o//A2R DVGkffhYKmHThZclWKZIHB4cY3TQHXf4LlUlXMxeD/P512/j4Pno9PhRH g==; X-CSE-ConnectionGUID: vjANS3GtSDmwj6eseH42uA== X-CSE-MsgGUID: UEXeBfu+St+n75Sd9210wg== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349485" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:45 +0800 IronPort-SDR: 68d55a49_cQyJbW5pGslHfQDndoa+VS80tDtadeapm4JOmAQpZ0Ek9ZC usEduMwA+QIDXTNu6pe1jRjtYVCEoUhUyl2bR2A== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:46 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:43 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 17/22] blkparse: natively parse blk_io_trace2 Date: Thu, 25 Sep 2025 17:04:22 +0200 Message-ID: <20250925150427.67394-18-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Natively parse 'struct blk_io_trace2' from a blktrace binary. Signed-off-by: Johannes Thumshirn --- blkparse.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++ blktrace.h | 18 +++++++++ 2 files changed, 130 insertions(+) diff --git a/blkparse.c b/blkparse.c index 7100009..2eec3a9 100644 --- a/blkparse.c +++ b/blkparse.c @@ -2471,6 +2471,37 @@ static int read_one_bit(int fd, struct blk_io_trace2= **bit2, int block, return 0; } =20 +static int read_one_bit2(int fd, struct blk_io_trace2 **bit2, int block, + int *fdblock) +{ + struct blk_io_trace2 *new =3D *bit2; + int ret; + int pdu_len; + void *p; + + p =3D (void *) ((u8 *)new + sizeof(__u32)); + + ret =3D read_data(fd, p, sizeof(*new) - sizeof(__u32), block, fdblock); + if (ret) + return ret; + + pdu_len =3D get_pdulen(new->pdu_len); + if (pdu_len) { + void *ptr =3D realloc(new, sizeof(*new) + pdu_len); + + ret =3D read_data(fd, ptr + sizeof(*new), pdu_len, 1, fdblock); + if (ret) { + free(ptr); + return ret; + } + new =3D ptr; + } + + bit2_trace_to_cpu(new); + *bit2 =3D new; + + return 0; +} static int read_events(int fd, int always_block, int *fdblock) { struct per_dev_info *pdi =3D NULL; @@ -2538,6 +2569,44 @@ static int read_events(int fd, int always_block, int= *fdblock) t->next =3D trace_list; trace_list =3D t; =20 + if (!pdi || pdi->dev !=3D bit->device) + pdi =3D get_dev_info(bit->device); + + if (bit->time > pdi->last_read_time) + pdi->last_read_time =3D bit->time; + } else if (version =3D=3D SUPPORTED_VERSION2) { + struct blk_io_trace2 *bit; + bit =3D bit_alloc(); + bit->magic =3D magic; + + ret =3D read_one_bit2(fd, &bit, 1, fdblock); + if (ret) + break; + + /* + * not a real trace, so grab and handle it here + */ + if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && + (bit->action & ~__BLK_TN_CGROUP) !=3D BLK_TN_MESSAGE) { + handle_notify(bit); + output_binary(bit, sizeof(*bit) + bit->pdu_len); + continue; + } + + if (verify_trace(bit->magic)) { + bit_free(bit); + bit =3D NULL; + continue; + } + + t =3D t_alloc(); + memset(t, 0, sizeof(*t)); + t->bit =3D bit; + t->read_sequence =3D read_sequence; + + t->next =3D trace_list; + trace_list =3D t; + if (!pdi || pdi->dev !=3D bit->device) pdi =3D get_dev_info(bit->device); =20 @@ -2698,6 +2767,49 @@ static int ms_prime(struct ms_stream *msp) msp->last->next =3D t; msp->last =3D t; } + } else if (version =3D=3D SUPPORTED_VERSION2) { + bit =3D bit_alloc(); + bit->magic =3D magic; + + ret =3D read_one_bit2(pci->fd, &bit, 1, &pci->fdblock); + if (ret) + goto err; + + if (verify_trace(bit->magic)) + goto err; + + if (bit->cpu !=3D pci->cpu) { + fprintf(stderr, + "cpu %d trace info has error cpu %d\n", + pci->cpu, bit->cpu); + continue; + } + + if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && + (bit->action & ~__BLK_TN_CGROUP) !=3D BLK_TN_MESSAGE) { + handle_notify(bit); + output_binary(bit, sizeof(*bit) + bit->pdu_len); + bit_free(bit); + bit =3D NULL; + + i -=3D 1; + continue; + } + + if (bit->time > pdi->last_read_time) + pdi->last_read_time =3D bit->time; + + t =3D t_alloc(); + memset(t, 0, sizeof(*t)); + t->bit =3D bit; + + if (msp->first =3D=3D NULL) + msp->first =3D msp->last =3D t; + else { + msp->last->next =3D t; + msp->last =3D t; + } + } else { fprintf(stderr, "unsupported version %d\n", version); continue; diff --git a/blktrace.h b/blktrace.h index 196b3c9..ba06237 100644 --- a/blktrace.h +++ b/blktrace.h @@ -129,6 +129,24 @@ static inline void bit_to_bit2(struct blk_io_trace *ol= d, old->pdu_len); } =20 +static inline void bit2_trace_to_cpu(struct blk_io_trace2 *t) +{ + if (data_is_native) + return; + + t->magic =3D be32_to_cpu(t->magic); + t->sequence =3D be32_to_cpu(t->sequence); + t->time =3D be64_to_cpu(t->time); + t->sector =3D be64_to_cpu(t->sector); + t->bytes =3D be32_to_cpu(t->bytes); + t->action =3D be64_to_cpu(t->action); + t->pid =3D be32_to_cpu(t->pid); + t->device =3D be32_to_cpu(t->device); + t->cpu =3D be32_to_cpu(t->cpu); + t->error =3D be16_to_cpu(t->error); + t->pdu_len =3D be16_to_cpu(t->pdu_len); +} + static inline void bit_trace_to_cpu(struct blk_io_trace *t) { if (data_is_native) --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74F2E31BC85; Thu, 25 Sep 2025 15:05:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812752; cv=none; b=sahYWaS2+Sg6ZebyPUchs/fehiT+QAhfzMCKaMXllNS9culbD1EKJjjZylK+WaC78vM+tNq9tSA19CKoSrj0VN1U3gYNn/vyq11G7IBb2UHaJ6p89PszGlI5klXUwhzqUI2d4PVkbRl+KsSCa7zyc7qm7LaBUuakurGNRS3SOEM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812752; c=relaxed/simple; bh=dwSC2RUaoe2h7mxl9M76u72coZTYQrXJJJUqu250P/g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SiyyTAqgLD20mPtWkTGDh1xDcg5/B3dwExWs0cgNUsBr0qVehk+SKv+zSLvGxHo6qwKxggwe2vda2p/h/SetKlAYbIBXfRk/fdtNvRH1QhmTuxJQXuYKkl6iDwJDvmvsJNahU0Q4obaqwMOqx+NYU2pJ6yYfGeFmd9wHZCZAc/g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=UdbUER4r; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="UdbUER4r" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812750; x=1790348750; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dwSC2RUaoe2h7mxl9M76u72coZTYQrXJJJUqu250P/g=; b=UdbUER4ry63au2FFClkCYfj7lxkrznXF7kqI3cIeYPXOFMckajYM19ru NewKWPcs3LvJk0s4XJSY+cELNFRllNPlf4npBSO/GiYxAGSlnZ7aV0vu0 Q9kS4Wq6TGyxzDvOVXgfKC5UZYD+/DP9XV+/MNY9A6WHwot5P2wsD4q0o ijsQRzUbtlePH1iZSHe0WzzZpuwFucObFEvcNdD3KRxKEQoXJtBc5xMxc q4MI37MsW/UxrpqkYqp2DmKl4y2VDPDkBsYYWz4BBo7P5s42O7tVs9Rl1 qwAzy21+2dbEmtq5jqs15EkKTYFQH8R+kAYw9ms3oj7gjV0lkY9UlAzi+ Q==; X-CSE-ConnectionGUID: 0LEPHdu4QNq3KTVH/CwfkQ== X-CSE-MsgGUID: ID4meerNSqC49VrJb1lpNw== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349532" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:49 +0800 IronPort-SDR: 68d55a4e_/3DSHwPxmqzYkBKFtk5LXa5c1pJAvsvGZj+Q9SIMnAyyaGw AJiUh35DkbDKFS8Ctqw2F+PWuYLONglFa68d6Vg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:50 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:47 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 18/22] blkparse: parse zone (un)plug actions Date: Thu, 25 Sep 2025 17:04:23 +0200 Message-ID: <20250925150427.67394-19-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Parse Zone Write Plugging plug and unplug actions in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse.c | 7 +++++++ blkparse_fmt.c | 18 ++++++++++++++++++ blktrace_api.h | 2 ++ 3 files changed, 27 insertions(+) diff --git a/blkparse.c b/blkparse.c index 2eec3a9..76c775b 100644 --- a/blkparse.c +++ b/blkparse.c @@ -1722,6 +1722,13 @@ static void dump_trace_fs(struct blk_io_trace2 *t, s= truct per_dev_info *pdi, account_unplug(t, pci, 1); log_unplug(pci, t, "UT"); break; + case __BLK_TA_ZONE_PLUG: + log_action(pci, t, "ZP"); + break; + case __BLK_TA_ZONE_UNPLUG: + account_unplug(t, pci, 0); + log_unplug(pci, t, "ZU"); + break; case __BLK_TA_SPLIT: log_track_split(pdi, t); log_split(pci, t, "X"); diff --git a/blkparse_fmt.c b/blkparse_fmt.c index f93addb..80e02fc 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -301,6 +301,21 @@ static char *parse_field(char *act, struct per_cpu_inf= o *pci, return p; } =20 +static void process_zoned(char *act, struct blk_io_trace2 *t, char *name) +{ + switch (act[1]) { + case 'P': /* Zone Plug */ + fprintf(ofp, "[%s]\n", name); + break; + case 'U': /* Zone Unplug */ + fprintf(ofp, "[%s] %u\n", name, get_pdu_int(t)); + break; + default: + fprintf(stderr, "Unknown zoned action %c\n", act[1]); + break; + } +} + static void process_default(char *act, struct per_cpu_info *pci, struct blk_io_trace2 *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf) @@ -429,6 +444,9 @@ static void process_default(char *act, struct per_cpu_i= nfo *pci, fprintf(ofp, "%*s\n", pdu_len, pdu_buf); break; =20 + case 'Z': /* Zoned command */ + process_zoned(act, t, name); + break; default: fprintf(stderr, "Unknown action %c\n", act[0]); break; diff --git a/blktrace_api.h b/blktrace_api.h index bbf075f..3966e1a 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -62,6 +62,8 @@ enum { __BLK_TA_REMAP, /* bio was remapped */ __BLK_TA_ABORT, /* request aborted */ __BLK_TA_DRV_DATA, /* binary driver data */ + __BLK_TA_ZONE_PLUG, /* zone write plug was plugged */ + __BLK_TA_ZONE_UNPLUG, /* zone write plug was unplugged */ __BLK_TA_ZONE_MGMT, /* zone management command was issued */ __BLK_TA_CGROUP =3D 1 << 8, }; --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DE652E3B16; Thu, 25 Sep 2025 15:05:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812756; cv=none; b=GjOm5BZnA+jg9rPn/p2CXvPZl6q8fr2hT2qEa/60DteRZx/Y07nJAlxIRdS1nnPigicU+8JnT/ja4M9ippIDcVw5viOVuTNuxpWKsgWTDEEVTZbtcxrf1UhxBmgdnq3iZ472Z0G5OenvBik2uPHd05Mfg5iLbGjCh6gMDIoD3L8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812756; c=relaxed/simple; bh=0rGeO4LjFLt4NYO1/jwlV1gV2d5eicuuveoHWszrAJw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Er5y30YaY2JTgAxwI7A02L/w8BnOaDkb8ihncEdnLEYeorqs1ZXJ45a04JWKSfrV5pzS9cQqNSbrrsHK96YSICoch95P8d4yQkxSp1QbuboqFZqMJ80XsNP8WtSssCsPKX98C/MSdvd0vpprrwE8SBGnUDgFkciDMuUinX+5N5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=UkkfFYMQ; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="UkkfFYMQ" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812755; x=1790348755; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0rGeO4LjFLt4NYO1/jwlV1gV2d5eicuuveoHWszrAJw=; b=UkkfFYMQ9pVNyYMloX8Z7Vrh/Lay14+7/CIKRDcexA18kKBRmGiR/VDt RO4GoMqBKCa7MjTnLHcUvQi1hLgl0qvnpCsJ3jfGZMhdBFOCxm1CJZ+lX mDiZGlhrzPEnUUopo+8Pl715xmwnRPCW6jJ1G63JZ8Tq1je65Uj1VIzhu aojeDiXMfnqvzyqWt/Kl5GETaPnP8n94LNdlHCp+sUFaqfwDg7HZPeoP9 s2JiE7DzmDbbJ/Z67H2t/GHdUyftIx3yxdpDDPyC2+Bq8YgPba55EYwTk 53AllyXDoVKADy0S1Y9EkPlt0EjTaJUqBjISvRnU5iIX+qC9WsG35RIpK g==; X-CSE-ConnectionGUID: gB6KIVwmQkSsomesqrsXsA== X-CSE-MsgGUID: 6Xwc4qm4TuiDI30G6KVQ9g== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349592" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:54 +0800 IronPort-SDR: 68d55a52_QNqtsTqiHsWonTOK1cAplseMiMcy1JydSYrdu/GeAkVZWpg oH7ocM4dY9bVWulYP4A5VwCP53dGAxwJ3iqcieg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:54 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:51 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 19/22] blkparse: add zoned commands to fill_rwbs() Date: Thu, 25 Sep 2025 17:04:24 +0200 Message-ID: <20250925150427.67394-20-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Parse zoned commands in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse_fmt.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/blkparse_fmt.c b/blkparse_fmt.c index 80e02fc..2767edd 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -60,19 +60,45 @@ static inline void fill_rwbs(char *rwbs, struct blk_io_= trace2 *t) bool d =3D !!(t->action & BLK_TC_ACT(BLK_TC_DISCARD)); bool f =3D !!(t->action & BLK_TC_ACT(BLK_TC_FLUSH)); bool u =3D !!(t->action & BLK_TC_ACT(BLK_TC_FUA)); + bool za =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_APPEND)); + bool zr =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_RESET)); + bool zra =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_RESET_ALL)); + bool zf =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_FINISH)); + bool zo =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_OPEN)); + bool zc =3D !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_CLOSE)); int i =3D 0; =20 if (f) rwbs[i++] =3D 'F'; /* flush */ =20 - if (d) + if (d) { rwbs[i++] =3D 'D'; - else if (w) + } else if (za) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'A'; + } else if (zr) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'R'; + } else if (zra) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'R'; + rwbs[i++] =3D 'A'; + } else if (zf) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'F'; + } else if (zo) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'O'; + } else if (zc) { + rwbs[i++] =3D 'Z'; + rwbs[i++] =3D 'C'; + } else if (w) { rwbs[i++] =3D 'W'; - else if (t->bytes) + } else if (t->bytes) { rwbs[i++] =3D 'R'; - else + } else { rwbs[i++] =3D 'N'; + } =20 if (u) rwbs[i++] =3D 'F'; /* fua */ --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A07631D39A; Thu, 25 Sep 2025 15:05:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812760; cv=none; b=j4sRIHMntgoEmsVYlg7M2LczqPU7JgyMYQwGGfH+rvCXTpvUK0KuFV7c0AsY6icoWkazPet2VlNhABWKKFsWX5Z5Rk0m+peee5dsmqCx24aXWmY7oNRKAE2nW4h19QJPF8D3h3PL4bs/ZVk835SlSas2scUiNCLmQ+T1c3EkRn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812760; c=relaxed/simple; bh=PP1z3XV18Cqf1vF1xaMFZk9p40Bg62sHd4FSn7J7hGA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XXOsZp/cOyZ/WHxCEWGWf9k+n7a8khkALt9ZPf6DdBG82sTwhJHH0q1gypAPpAzSDzGARfXc0CF2SkyJrMlpgKr7ZSBV4T+oUjNYGfUvVx8ujo5cY/PIMvwdU3J2Nc18d9ONIUUOnm9Uk+s4DQ0h9rSlt895Qo31lADIg0kKKDM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=KyAqppxX; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="KyAqppxX" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812759; x=1790348759; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PP1z3XV18Cqf1vF1xaMFZk9p40Bg62sHd4FSn7J7hGA=; b=KyAqppxXHU1TK3yjU9wYYcXpVYXcwIaY+X+LFf0LBQqAHrQO226wfT+q elBXB5dftUywb+atUQWJJBC3ya+qVm9Az8wFa4bjRlENBcoj316dOP303 jFbAMzAcm24GrZ4UK+hNaVgPWshqQRn7JmZR8AG8TsAhw1Oo49/wWfQMD kZSA4Ii1q5+QKAq7hegoy29WTw0RiZ9zuV3oxxFQPX4yZTgY7rfBQpkfy z0M4FtsTQQD+wegNLtNmb0KphV/ferU9zJ4I71tlbna7EUYAGiVhgaVa/ uvSGCp4T1q/oGgIKf1SnRLNsZJ1ycQ7mjJJ38OwW4yh8ik3zEB9SU4yrV w==; X-CSE-ConnectionGUID: z1jywLqyR3uNR5SFQrtm8g== X-CSE-MsgGUID: W1E7bzNLSHmEbJCudKQVSQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349641" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:05:58 +0800 IronPort-SDR: 68d55a56_fMWFmg7XX/EmtuZb7MtXAULqR+C94BzIZJq8Nwz4iP10yfI MrbuygQYZZRoQ/1bWvLxQGXt2ZiD78Zu0jmmF9Q== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:05:58 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:55 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 20/22] blkparse: parse zone management commands Date: Thu, 25 Sep 2025 17:04:25 +0200 Message-ID: <20250925150427.67394-21-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Parse management commands in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/blkparse.c b/blkparse.c index 76c775b..af6f0d7 100644 --- a/blkparse.c +++ b/blkparse.c @@ -1651,6 +1651,9 @@ static void dump_trace_pc(struct blk_io_trace2 *t, st= ruct per_dev_info *pdi, case __BLK_TA_INSERT: log_pc(pci, t, "I"); break; + case __BLK_TA_ZONE_MGMT: + log_action(pci, t, "ZM"); + break; default: fprintf(stderr, "Bad pc action %x\n", act); break; @@ -1729,6 +1732,9 @@ static void dump_trace_fs(struct blk_io_trace2 *t, st= ruct per_dev_info *pdi, account_unplug(t, pci, 0); log_unplug(pci, t, "ZU"); break; + case __BLK_TA_ZONE_MGMT: + log_action(pci, t, "ZM"); + break; case __BLK_TA_SPLIT: log_track_split(pdi, t); log_split(pci, t, "X"); --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0354B31D73A; Thu, 25 Sep 2025 15:06:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812764; cv=none; b=t1UNq/Jjsw+LYo0Qz5+g9E5cqdGr0KxCuPkzjki6d0S1DXDNeRaYH9tZxV3u1CEF6i9QEYt8g4765gOF1Ms/n66sIL+PAny2AuCBJ9aDnOqrz53IQ0ZyWFhSfIeGvu2KlMpE3MgO6PDxkBu+1ZVLmv9tA0XMDuJNT/sd2HmtvGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812764; c=relaxed/simple; bh=Bq1feJ+M5PPyabVZFLEfvki0f4y0d112SBTH0REqjF4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oy7eY2OLjOJG2ZQngOUkwtu1l33cY/rYQmlMBQA60tCrgfR/8OwJFLbvk3vwdv5M1w07T1LlTXkQdKFTGdf8GiD95xIlf96ALMmedX30Hc3wBkI/Xj/JKKWWXgkeWKKAnNG8A/ILAIOcVfkA4KT+/8e3HJiw4KuUOU7ENd3NQbA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=abvjWhkH; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="abvjWhkH" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812762; x=1790348762; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Bq1feJ+M5PPyabVZFLEfvki0f4y0d112SBTH0REqjF4=; b=abvjWhkHk5a08zJJ2cxw6qsHYZzYcYAKl5ij1IWwN3kAbn2LTTdtUxBV /emit/rFWpZ3tOLWODN6lDUdkDwYi++aHy7OGHIS/oC6xmIa9EuaO+m2x HEkNFTUx4fFXh9w8mFZhCjgoqmBDthuszbsGWHYuFZPD9rohtMwlaRZk6 7gbPPjapt3ABib3UvO2aNEnODPUfRwVRRjw+fARasIxomhrXwVj80JcQM HDSscwVfgvjPl4ZP/EOrRSGHb30b0ES92LbcAEVCWv1ggqK4l4QKDlfK6 etJtiSo6w8eAkZEZpd0q3jwvRoOKc7vCuu1fy016wZxgnJblgNcroTG3d w==; X-CSE-ConnectionGUID: 8dPN7KkxSP+xI/Wzw4519Q== X-CSE-MsgGUID: Y9ecdGLTQrivtfEn5pm9Vg== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349683" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:06:02 +0800 IronPort-SDR: 68d55a5a_TWec/Bbmz029fiaUmIH7r01bJiH2Jff/in/EH2/TTXKAVYj jqM9OfWuR0LmxdUgQwqBuvwuEo1V2MxW1LAwXJA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:06:03 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:05:59 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 21/22] blkparse: parse zone append completions Date: Thu, 25 Sep 2025 17:04:26 +0200 Message-ID: <20250925150427.67394-22-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Parse completion of Zone Append commands in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse_fmt.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/blkparse_fmt.c b/blkparse_fmt.c index 2767edd..725ddbe 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -327,9 +327,31 @@ static char *parse_field(char *act, struct per_cpu_inf= o *pci, return p; } =20 -static void process_zoned(char *act, struct blk_io_trace2 *t, char *name) +static void process_zoned(char *act, struct blk_io_trace2 *t, + unsigned long long elapsed, char *name) { switch (act[1]) { + case 'A': /* Zone Append */ + if (elapsed !=3D -1ULL) { + if (t_sec(t)) + fprintf(ofp, "%llu + %u (%8llu) [%d]\n", + (unsigned long long) t->sector, + t_sec(t), elapsed, t->error); + else + fprintf(ofp, "%llu (%8llu) [%d]\n", + (unsigned long long) t->sector, + elapsed, t->error); + } else { + if (t_sec(t)) + fprintf(ofp, "%llu + %u [%d]\n", + (unsigned long long) t->sector, + t_sec(t), t->error); + else + fprintf(ofp, "%llu [%d]\n", + (unsigned long long) t->sector, + t->error); + } + break; case 'P': /* Zone Plug */ fprintf(ofp, "[%s]\n", name); break; @@ -471,7 +493,7 @@ static void process_default(char *act, struct per_cpu_i= nfo *pci, break; =20 case 'Z': /* Zoned command */ - process_zoned(act, t, name); + process_zoned(act, t, elapsed, name); break; default: fprintf(stderr, "Unknown action %c\n", act[0]); --=20 2.51.0 From nobody Thu Oct 2 00:54:14 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34A9531DD99; Thu, 25 Sep 2025 15:06:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812768; cv=none; b=OwX4kllyrSsPo4JCansv1oGtl4M7HXHmf7cprAQx6LzcDsKFLyJggGBIddPR6U6LcZTtGtVMHJRLuS2VlkQLFNz9E0Js5ydX4mP7GzM5W7/FJo/YpmHnr3EZWjnjp7DhErkH2HmIVPYgmIkA2ZMV17aQfkS9Xel0YwXtqj5xMx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812768; c=relaxed/simple; bh=2H5LFMNPaYyglNMEHb+f7AgkaPYbc1RUaom07P26U+A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F/frVVJf47H22ywWmWeMoIdQXLM2CkmLh7l9jaJ9GzS/7ouee/pd/xpjsKkzpvxxV9ZFJ9f11svLZx74hYTWmxqeMtm/npC454qOkCtiiXx9zEsO83FevnIlOZsDXyjiLauRetZxiyWlGNJAnYBPEXh4airOIAammH/RV4Zp0DE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com; spf=pass smtp.mailfrom=wdc.com; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b=WzL+p2sR; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="WzL+p2sR" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812767; x=1790348767; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2H5LFMNPaYyglNMEHb+f7AgkaPYbc1RUaom07P26U+A=; b=WzL+p2sRSKbELmihQXapu6wGuUSsSFN2EkmDN2C5MrAhcuK7wna05CzA 9mqXZTuZqNTiXSssq6VDb8kSHQgxjEFq6JsLg4iAPOd1QX0Ivh9zWTC3p Z5A9kWflk0avWx0ck1UNlGNhioLwE3xJAUADX0rdnG5GuMqBmQpOKRWQY ytwbhky7fctbblCphLJC0/zmZQYjF+TTGSzHybWqDPVfXMQAdrkl9yO/C bJsx7FoMr+r84MQe9PcwRjJ9ddawE9bxlqVw0MywnEkVGeX1Or5mOKuX7 IG+WlHUPA0+1mtg53V48Hdx6LVwfdfSG2TnPfl4A7HJlvXaPpXo4J8KEh Q==; X-CSE-ConnectionGUID: kPlDyPBgSxS3jNNW0YtWoQ== X-CSE-MsgGUID: fX20N8MbTqqQKwHDl2CF5w== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130349707" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:06:06 +0800 IronPort-SDR: 68d55a5e_T8gB1/PsG4vK6nAR6phwO6tux+LG7PvNIOKDOk29HwqCV8L nBbhamMsd8x0J0nuEiADMLDE1xSqPnpttNfkLqg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:06:07 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:06:04 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH blktrace v2 22/22] blktrace: call BLKTRACESETUP2 ioctl per default to setup a trace Date: Thu, 25 Sep 2025 17:04:27 +0200 Message-ID: <20250925150427.67394-23-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150427.67394-1-johannes.thumshirn@wdc.com> References: <20250925150427.67394-1-johannes.thumshirn@wdc.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" Call BLKTRACESETUP2 ioctl per default and if the kernel does not support this ioctl because it is too old, fall back to calling BLKTRACESETUP. Signed-off-by: Johannes Thumshirn --- blktrace.c | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/blktrace.c b/blktrace.c index 038b2cb..72562fd 100644 --- a/blktrace.c +++ b/blktrace.c @@ -279,7 +279,7 @@ static int max_cpus; static int ncpus; static cpu_set_t *online_cpus; static int pagesize; -static int act_mask =3D ~0U; +static unsigned long long act_mask =3D ~0U; static int kill_running_trace; static int stop_watch; static int piped_output; @@ -1067,6 +1067,36 @@ static void close_client_connections(void) } } =20 +static int setup_buts2(void) +{ + struct list_head *p; + int ret =3D 0; + + __list_for_each(p, &devpaths) { + struct blk_user_trace_setup2 buts2; + struct devpath *dpp =3D list_entry(p, struct devpath, head); + + memset(&buts2, 0, sizeof(buts2)); + buts2.buf_size =3D buf_size; + buts2.buf_nr =3D buf_nr; + buts2.act_mask =3D act_mask; + + if (ioctl(dpp->fd, BLKTRACESETUP2, &buts2) >=3D 0) { + dpp->ncpus =3D max_cpus; + dpp->buts_name =3D strdup(buts2.name); + dpp->setup_done =3D 1; + if (dpp->stats) + free(dpp->stats); + dpp->stats =3D calloc(dpp->ncpus, sizeof(*dpp->stats)); + memset(dpp->stats, 0, dpp->ncpus * sizeof(*dpp->stats)); + } else { + ret++; + } + } + + return ret; +} + static int setup_buts(void) { struct list_head *p; @@ -2684,9 +2714,11 @@ static int run_tracers(void) if (net_mode =3D=3D Net_client) printf("blktrace: connecting to %s\n", hostname); =20 - if (setup_buts()) { - done =3D 1; - return 1; + if (setup_buts2()) { + if (setup_buts()) { + done =3D 1; + return 1; + } } =20 if (use_tracer_devpaths()) { --=20 2.51.0