From nobody Thu Oct 2 23:53:20 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 9E0DE3203BE; Tue, 9 Sep 2025 11:06:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415993; cv=none; b=U1qQEo/tnO3tfQ+XkSX+U7/tJMgW23KJgHMCOBBtVIZzRJ5ifrqaiClfpCx7+C5DWroD42/7LPvG7FfZMTTwdWnRr/ajUR7h5DKbfsxVcC2kQCWksS6C1WZmN76HHU07W3F/jF33rn0KLsTPbl8Ls0tB81+7rp5eCsRX3Ic0ZZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415993; c=relaxed/simple; bh=HzysL1uoh3uD6F6WLzvJxD9tgkDObgbIpDWKS8Ugh2E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NwGK79yVV9/Grp7eS2075kOByyEplhWAezVqMaiELALs0HF34mPj5yHMT5RcbeN6xarGCQ+3Xgi3OEa5XsD3NN92Wy71jMSWnv/d57AnomSe9cZead7Smn+UBJKlOZdpOTcakF0VP5lVQAFYtF4cfp0LPOPkrI0t6Ok1/PmhIOk= 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=eFmGkdrP; arc=none smtp.client-ip=216.71.154.42 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="eFmGkdrP" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757415992; x=1788951992; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HzysL1uoh3uD6F6WLzvJxD9tgkDObgbIpDWKS8Ugh2E=; b=eFmGkdrPNUV1fEEu8Du711hMjbc5tdnY0S2sPokPwPM5s0a+QSOJtWKg 2aaw0CWeZWEa7AxuBBHL+8RhLYAUGwTW39erx5kfKhgBN8fwP4NWuQXtX 6UUoUJ0z6/FvWIDvaJmoTKBGHTMIgDvFoZGadjAh3UOPTyJ2s4Xq1Ig6d QEiBrHRd9ZiQhj9d+OXl0V9pwAV8dV86kv7an8yW6gvX4ohVbnl+8OXSK uUKMrtYccyjIzPfLsbqEdt9UcyPMEbM2VF3TrBa8emNYFo41KY90YLvW3 y5WnDdBTGaEUhZZvsZakplxIP2d8HVrY8O0Zh9kIM/BAVtyyE3fPoKPQU Q==; X-CSE-ConnectionGUID: mjtCr5ZnRx+wxmw+R7EaIA== X-CSE-MsgGUID: MUru3q9JSUC0CRNohJuZcA== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112809869" 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; 09 Sep 2025 19:06:25 +0800 IronPort-SDR: 68c00a31_74gRUzFskXdv+0ZPfFEQHvUt2T6+hRSgiE2n8uu/7H5mq19 LOeP439GyEhWrPBJqc3ngGQ0Pv8y8CzDp0tyPNg== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:25 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 01/16] blktrace: split do_blk_trace_setup into two functions Date: Tue, 9 Sep 2025 13:05:56 +0200 Message-Id: <20250909110611.75559-2-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Split do_blk_trace_setup into two functions, this is done to prepare for an incoming new BLKTRACESETUP2 ioctl(2) which can receive extended parameters form user-space. Signed-off-by: Johannes Thumshirn --- kernel/trace/blktrace.c | 95 ++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 6941145b5058..487eabfaf70e 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -494,9 +494,10 @@ static void blk_trace_setup_lba(struct blk_trace *bt, /* * Setup everything required to start tracing */ -static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t d= ev, - struct block_device *bdev, - struct blk_user_trace_setup *buts) +static struct blk_trace *blk_trace_setup_prepare(struct request_queue *q, + char *name, dev_t dev, + u32 buf_size, u32 buf_nr, + struct block_device *bdev) { struct blk_trace *bt =3D NULL; struct dentry *dir =3D NULL; @@ -504,31 +505,19 @@ static int do_blk_trace_setup(struct request_queue *q= , char *name, dev_t dev, =20 lockdep_assert_held(&q->debugfs_mutex); =20 - if (!buts->buf_size || !buts->buf_nr) - return -EINVAL; - - strscpy_pad(buts->name, name, BLKTRACE_BDEV_SIZE); - - /* - * some device names have larger paths - convert the slashes - * to underscores for this to work as expected - */ - strreplace(buts->name, '/', '_'); - /* * bdev can be NULL, as with scsi-generic, this is a helpful as * we can be. */ if (rcu_dereference_protected(q->blk_trace, lockdep_is_held(&q->debugfs_mutex))) { - pr_warn("Concurrent blktraces are not allowed on %s\n", - buts->name); - return -EBUSY; + pr_warn("Concurrent blktraces are not allowed on %s\n", name); + return ERR_PTR(-EBUSY); } =20 bt =3D kzalloc(sizeof(*bt), GFP_KERNEL); if (!bt) - return -ENOMEM; + return ERR_PTR(-ENOMEM); =20 ret =3D -ENOMEM; bt->sequence =3D alloc_percpu(unsigned long); @@ -548,7 +537,7 @@ static int do_blk_trace_setup(struct request_queue *q, = char *name, dev_t dev, if (bdev && !bdev_is_partition(bdev)) dir =3D q->debugfs_dir; else - bt->dir =3D dir =3D debugfs_create_dir(buts->name, blk_debugfs_root); + bt->dir =3D dir =3D debugfs_create_dir(name, blk_debugfs_root); =20 /* * As blktrace relies on debugfs for its interface the debugfs directory @@ -556,8 +545,7 @@ static int do_blk_trace_setup(struct request_queue *q, = char *name, dev_t dev, * files or directories. */ if (IS_ERR_OR_NULL(dir)) { - pr_warn("debugfs_dir not present for %s so skipping\n", - buts->name); + pr_warn("debugfs_dir not present for %s so skipping\n", name); ret =3D -ENOENT; goto err; } @@ -569,17 +557,39 @@ static int do_blk_trace_setup(struct request_queue *q= , char *name, dev_t dev, debugfs_create_file("dropped", 0444, dir, bt, &blk_dropped_fops); debugfs_create_file("msg", 0222, dir, bt, &blk_msg_fops); =20 - bt->rchan =3D relay_open("trace", dir, buts->buf_size, - buts->buf_nr, &blk_relay_callbacks, bt); + bt->rchan =3D relay_open("trace", dir, buf_size, buf_nr, + &blk_relay_callbacks, bt); if (!bt->rchan) goto err; =20 + blk_trace_setup_lba(bt, bdev); + + return bt; + +err: + if (ret) + blk_trace_free(q, bt); + + return ERR_PTR(ret); +} + +static void blk_trace_setup_finalize(struct request_queue *q, + char *name, struct blk_trace *bt, + struct blk_user_trace_setup *buts) + +{ + strscpy_pad(buts->name, name, BLKTRACE_BDEV_SIZE); + + /* + * some device names have larger paths - convert the slashes + * to underscores for this to work as expected + */ + strreplace(buts->name, '/', '_'); + bt->act_mask =3D buts->act_mask; if (!bt->act_mask) bt->act_mask =3D (u16) -1; =20 - blk_trace_setup_lba(bt, bdev); - /* overwrite with user settings */ if (buts->start_lba) bt->start_lba =3D buts->start_lba; @@ -591,12 +601,6 @@ static int do_blk_trace_setup(struct request_queue *q,= char *name, dev_t dev, =20 rcu_assign_pointer(q->blk_trace, bt); get_probe_ref(); - - ret =3D 0; -err: - if (ret) - blk_trace_free(q, bt); - return ret; } =20 int blk_trace_setup(struct request_queue *q, char *name, dev_t dev, @@ -604,17 +608,25 @@ int blk_trace_setup(struct request_queue *q, char *na= me, dev_t dev, char __user *arg) { struct blk_user_trace_setup buts; + struct blk_trace *bt; int ret; =20 ret =3D copy_from_user(&buts, arg, sizeof(buts)); if (ret) return -EFAULT; =20 + if (!buts.buf_size || !buts.buf_nr) + return -EINVAL; + mutex_lock(&q->debugfs_mutex); - ret =3D do_blk_trace_setup(q, name, dev, bdev, &buts); + bt =3D blk_trace_setup_prepare(q, name, dev, buts.buf_size, buts.buf_nr, + bdev); + if (IS_ERR(bt)) { + mutex_unlock(&q->debugfs_mutex); + return PTR_ERR(bt); + } + blk_trace_setup_finalize(q, name, bt, &buts); mutex_unlock(&q->debugfs_mutex); - if (ret) - return ret; =20 if (copy_to_user(arg, &buts, sizeof(buts))) { blk_trace_remove(q); @@ -631,11 +643,14 @@ static int compat_blk_trace_setup(struct request_queu= e *q, char *name, { struct blk_user_trace_setup buts; struct compat_blk_user_trace_setup cbuts; - int ret; + struct blk_trace *bt; =20 if (copy_from_user(&cbuts, arg, sizeof(cbuts))) return -EFAULT; =20 + if (!cbuts.buf_size || !cbuts.buf_nr) + return -EINVAL; + buts =3D (struct blk_user_trace_setup) { .act_mask =3D cbuts.act_mask, .buf_size =3D cbuts.buf_size, @@ -646,10 +661,14 @@ static int compat_blk_trace_setup(struct request_queu= e *q, char *name, }; =20 mutex_lock(&q->debugfs_mutex); - ret =3D do_blk_trace_setup(q, name, dev, bdev, &buts); + bt =3D blk_trace_setup_prepare(q, name, dev, buts.buf_size, buts.buf_nr, + bdev); + if (IS_ERR(bt)) { + mutex_unlock(&q->debugfs_mutex); + return PTR_ERR(bt); + } + blk_trace_setup_finalize(q, name, bt, &buts); mutex_unlock(&q->debugfs_mutex); - if (ret) - return ret; =20 if (copy_to_user(arg, &buts.name, ARRAY_SIZE(buts.name))) { blk_trace_remove(q); --=20 2.51.0 From nobody Thu Oct 2 23:53:20 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 9D8C6320CA3; Tue, 9 Sep 2025 11:06:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415995; cv=none; b=gfQtYUMnwapXcJStr81gepBM7KQPXZ6ECLn0w84nef8LswVUY3xp6PRH/9L8eVKSyUclZbStptIpas8TydWxtBIjCypeYXnzxV4wjatWw6GVAdpkZtHH6Do9fp9TQE9WQTTeGlUVoniJBrixJhXLxiSBWGfq9whLq1liDAv2QgE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415995; c=relaxed/simple; bh=y4Wx9hgSIxxX7ur9cWGGUX2Fl+Ln/UCjFYkMh/i6XUk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SYbx0QM8Q0yVQHUHfZ2iXRuwYHAeOzFSBtGB/BV1eccOsAEMlLeFGx33Gznis6rQiuEiGkBuW9gxAVjvUdTCs7cvol1K3otyDQ7boBPXURNA2nC6opD6pgO1CnMNSq3VXLm+8fXcIq3r2noduyMKnjlt5RQ04uBeHZQsyAFlKJA= 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=Htm2oaNi; arc=none smtp.client-ip=216.71.154.42 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="Htm2oaNi" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757415994; x=1788951994; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=y4Wx9hgSIxxX7ur9cWGGUX2Fl+Ln/UCjFYkMh/i6XUk=; b=Htm2oaNiLumCcbnHZyOw53GAIFAcjfAhnCVLJxOvGyK4taZG9vTRY2A0 ClM2/evoa6lhvPbzZUgOFH9uWPswZJS9tcxquVUX2ua8ho0fRoF1I87Ng O9UX5sfoRa53kPSMlSBZkMP51MVpuDIqmVSfLf2Ec2rc3Hp3uO0ajUse2 +hRoGjdalXNXTn5agv9DS5m4IuX7oOyc23nQLkditkZ+R6t0r98h/TbGb IZzBoFOiSe9/vMGA76X9DLYr4NI5nVc4TLHEf7d3pR8FIOLpTjtjN+Ue0 qdjQ7TcoqLD78EZ+1L+qllqY2zAht/1alZVn4LNdiURIt6III0EiZ66UX Q==; X-CSE-ConnectionGUID: jHwpDBddRfCDlgJcCoPs+A== X-CSE-MsgGUID: ol1UoUeYRamMYWSwqRm6+A== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112809916" 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; 09 Sep 2025 19:06:30 +0800 IronPort-SDR: 68c00a35_3XLXE5aRqzZGI1Cw2Xzl+/TMGFaSy+etrnwM9CwzpACBupg ifTNFxXPVd8pl61J629M1t2P4SnvykD4xkvr63g== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:30 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06:25 -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 02/16] blktrace: add definitions for blk_user_trace_setup2 Date: Tue, 9 Sep 2025 13:05:57 +0200 Message-Id: <20250909110611.75559-3-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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 version 2 of the blk_user_trace_setup ioctl. This new will enable a different struct layout of the binary data passed to user-space when using a new version of the blktrace utility requesting the new struct layout. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 14 ++++++++++++++ include/uapi/linux/fs.h | 1 + 2 files changed, 15 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index 1bfb635e309b..ba61374f90d8 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -143,4 +143,18 @@ 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 */ +}; + #endif /* _UAPIBLKTRACE_H */ diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index 0bd678a4a10e..a85d0b52a3f6 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -300,6 +300,7 @@ struct file_attr { #define BLKGETDISKSEQ _IOR(0x12,128,__u64) /* 130-136 are used by zoned block device ioctls (uapi/linux/blkzoned.h) */ /* 137-141 are used by blk-crypto ioctls (uapi/linux/blk-crypto.h) */ +#define BLKTRACESETUP2 _IOWR(0x12, 142, struct blk_user_trace_setup2) =20 #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ #define FIBMAP _IO(0x00,1) /* bmap access */ --=20 2.51.0 From nobody Thu Oct 2 23:53:20 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 3B511320CD3; Tue, 9 Sep 2025 11:06:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415996; cv=none; b=qYSVV19YkNqKGZN3F25FVaSLY17oDEsx+oBHNIAikCtGL8acz3stxjt7mVEzhuH0BG87k9q6ZwwJ/aAsG7tlgTnfEdeSvnuD+0fuSn/zaItDWITE4pKC4/xuDm9Ge1y2FSyl2SgqV5TDKrhESQefvqskxiHQVETWodpdLfngdps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757415996; c=relaxed/simple; bh=ysAhFqP3AWeX6zFL7mVOZDX6G6Yvrf7rwLRnwHCjxV0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hquik4SWLiFxFSf3qUPy8djdXUTVk67pyG7go+wXoXkngVTII/O6K/JtdkyC/qBvgEAvc5Qycx0oJABF5AKfxbCK0tSF/N8zc20tgRnAqhLao4TyKySK1R1lUcymO8OWXz/ENd9nQsvGc6x031h09NV92YbLDGCSdIkATi/oHXU= 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=roJn/rPI; arc=none smtp.client-ip=216.71.154.42 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="roJn/rPI" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757415995; x=1788951995; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ysAhFqP3AWeX6zFL7mVOZDX6G6Yvrf7rwLRnwHCjxV0=; b=roJn/rPIQeNSuZL6XjjiuP/i18gfzDnORNX9318erVcnTuLEc0xONHSa WBT5EPrDL6yWX/1RaMUDDOgXuY+X94zb8frbDvMzwtsI+Hh5NH/YCLuQg vZbmYaHDSvlpCf0GfpJAm6oQsB9u0bAUFLyyMjd9E6rx6S9HUwT489iZY vH1Payy9PUSrJe3FlLcDPnXE5m0DKxhP2oSTXMKyk7QYnz7+d1DRWfwBE wDztvzBQavAFAvyGrzMSX0vOLBjJRXEBSSJvBTbfDAy72Xm+/wbUxKufd Jdy/f2YJRtt8C9zHUfwWjf+/A7qdEUutuRowFONV2fs5zCgdyTOmB9ALD w==; X-CSE-ConnectionGUID: mLft5LT+QVa3rjTgSjBeWg== X-CSE-MsgGUID: BKF45ofgTCyw2vWcJdhaPQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112809922" 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; 09 Sep 2025 19:06:34 +0800 IronPort-SDR: 68c00a3a_HgQTHNDValobHkWZM5lFqtRcowe/ywW8/r4E68tZgK/vxZk n0WNGVdycWwwZvpdUSonD7ub6jXhRytlPSKG7qQ== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:34 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 03/16] blktrace: pass blk_user_trace2 to setup functions Date: Tue, 9 Sep 2025 13:05:58 +0200 Message-Id: <20250909110611.75559-4-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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 struct blk_user_trace_setup2 to blktrace_setup_finalize(). This prepares for the incoming extension of the blktrace protocol with a 64bit act_mask. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- include/linux/blktrace_api.h | 3 ++- kernel/trace/blktrace.c | 27 ++++++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 122c62e561fc..05c8754456aa 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h @@ -14,11 +14,12 @@ #include =20 struct blk_trace { + int version; int trace_state; struct rchan *rchan; unsigned long __percpu *sequence; unsigned char __percpu *msg_data; - u16 act_mask; + u64 act_mask; u64 start_lba; u64 end_lba; u32 pid; diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 487eabfaf70e..4a642a812854 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -575,7 +575,7 @@ static struct blk_trace *blk_trace_setup_prepare(struct= request_queue *q, =20 static void blk_trace_setup_finalize(struct request_queue *q, char *name, struct blk_trace *bt, - struct blk_user_trace_setup *buts) + struct blk_user_trace_setup2 *buts) =20 { strscpy_pad(buts->name, name, BLKTRACE_BDEV_SIZE); @@ -607,6 +607,7 @@ int blk_trace_setup(struct request_queue *q, char *name= , dev_t dev, struct block_device *bdev, char __user *arg) { + struct blk_user_trace_setup2 buts2; struct blk_user_trace_setup buts; struct blk_trace *bt; int ret; @@ -618,6 +619,15 @@ int blk_trace_setup(struct request_queue *q, char *nam= e, dev_t dev, if (!buts.buf_size || !buts.buf_nr) return -EINVAL; =20 + buts2 =3D (struct blk_user_trace_setup2) { + .act_mask =3D buts.act_mask, + .buf_size =3D buts.buf_size, + .buf_nr =3D buts.buf_nr, + .start_lba =3D buts.start_lba, + .end_lba =3D buts.end_lba, + .pid =3D buts.pid, + }; + mutex_lock(&q->debugfs_mutex); bt =3D blk_trace_setup_prepare(q, name, dev, buts.buf_size, buts.buf_nr, bdev); @@ -625,7 +635,9 @@ int blk_trace_setup(struct request_queue *q, char *name= , dev_t dev, mutex_unlock(&q->debugfs_mutex); return PTR_ERR(bt); } - blk_trace_setup_finalize(q, name, bt, &buts); + bt->version =3D 1; + blk_trace_setup_finalize(q, name, bt, &buts2); + strcpy(buts.name, buts2.name); mutex_unlock(&q->debugfs_mutex); =20 if (copy_to_user(arg, &buts, sizeof(buts))) { @@ -641,7 +653,7 @@ static int compat_blk_trace_setup(struct request_queue = *q, char *name, dev_t dev, struct block_device *bdev, char __user *arg) { - struct blk_user_trace_setup buts; + struct blk_user_trace_setup2 buts2; struct compat_blk_user_trace_setup cbuts; struct blk_trace *bt; =20 @@ -651,7 +663,7 @@ static int compat_blk_trace_setup(struct request_queue = *q, char *name, if (!cbuts.buf_size || !cbuts.buf_nr) return -EINVAL; =20 - buts =3D (struct blk_user_trace_setup) { + buts2 =3D (struct blk_user_trace_setup2) { .act_mask =3D cbuts.act_mask, .buf_size =3D cbuts.buf_size, .buf_nr =3D cbuts.buf_nr, @@ -661,16 +673,17 @@ static int compat_blk_trace_setup(struct request_queu= e *q, char *name, }; =20 mutex_lock(&q->debugfs_mutex); - bt =3D blk_trace_setup_prepare(q, name, dev, buts.buf_size, buts.buf_nr, + bt =3D blk_trace_setup_prepare(q, name, dev, buts2.buf_size, buts2.buf_nr, bdev); if (IS_ERR(bt)) { mutex_unlock(&q->debugfs_mutex); return PTR_ERR(bt); } - blk_trace_setup_finalize(q, name, bt, &buts); + bt->version =3D 1; + blk_trace_setup_finalize(q, name, bt, &buts2); mutex_unlock(&q->debugfs_mutex); =20 - if (copy_to_user(arg, &buts.name, ARRAY_SIZE(buts.name))) { + if (copy_to_user(arg, &buts2.name, ARRAY_SIZE(buts2.name))) { blk_trace_remove(q); return -EFAULT; } --=20 2.51.0 From nobody Thu Oct 2 23:53:20 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 7E964321F35; Tue, 9 Sep 2025 11:06:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416001; cv=none; b=Ts0JnGkd2mRuU/RFZBSDic/6PzUAufLQwqkpKhWTH7mXwBWcxGEBgNYSlN1rnSomU5Bh3aHbYim0diDEF6SRvnhVpS5JB/0nWIZlKFiwj7FR82DAsz90ycnVCx/khjW2rgK+RbBeeRGF5hLFye0JzPS677R9j2UpYWIwTsd7w7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416001; c=relaxed/simple; bh=iHbRXJL+pjCtcFNPtwYgii21etYlwhHNJfWRGyj9F60=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qB3GbBoSrUQG8d3/Pt+XmVkOxyBXbm4C2h5nYUMkL0jwAPrmoW7fZTfL2WPGMiPJ2iENmUtGO1l7fQ/L2Sd3zQMgwWykkuNbOpDokPJCukrwjcMLgq8G+G7kxTNvn1j5lmTdHTUa7pyrSzEnKAdK4ioHV/mUDI8gv28DtrpytU8= 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=PuIGvXfm; arc=none smtp.client-ip=216.71.154.42 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="PuIGvXfm" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757415999; x=1788951999; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iHbRXJL+pjCtcFNPtwYgii21etYlwhHNJfWRGyj9F60=; b=PuIGvXfm6gT/jR25dzv334D0Ix3oe+i3lohDzrTc2IGKY1JJiaFyhtR9 gl8bsadGDZEw19Nx6eyIqalba37BXklezcl06ybruW56uQEfMzhusKLwK zwFutbLqKUy7MaJPhU6fxCox0fZq8pNH0RIDf7Szh+/5yPbuprpzjiCHV fAQeBoi7ndcSHKQl8taClc6u1NWMf+P+2WeWlMJ0ULX69Z9V0zlrVcpxY ToOs7v/tFPe0p6/J3NYseLMdrKKF5SKHloGaosU8wpYotbgC7dXtheFdh K/epSZ2wOJf5tt9yzsiVESn7vKFvAWvMqASR+RBAlRxSZxiZDBpMxnq8i g==; X-CSE-ConnectionGUID: eTWn5WowSDWlK9tyhOOC0g== X-CSE-MsgGUID: OkOvDxZ+R4yULHA/39N/PQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112809930" 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; 09 Sep 2025 19:06:39 +0800 IronPort-SDR: 68c00a3e_1kGDdowEdFvJxUMK/a06tLaRQg/vbk7ZO5UpugXl+9sSNIx puaQwVJr2dgBFGAWoYYsIERt0g6SUXuYvCkbAAw== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:39 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 04/16] blktrace: add definitions for struct blk_io_trace2 Date: Tue, 9 Sep 2025 13:05:59 +0200 Message-Id: <20250909110611.75559-5-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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 the extended version of the blktrace protocol using a wider action type to be able to record new actions in the kernel. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index ba61374f90d8..01779f84d09f 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -94,6 +94,7 @@ enum blktrace_notify { =20 #define BLK_IO_TRACE_MAGIC 0x65617400 #define BLK_IO_TRACE_VERSION 0x07 +#define BLK_IO_TRACE2_VERSION 0x08 =20 /* * The trace itself @@ -113,6 +114,20 @@ struct blk_io_trace { /* cgroup id will be stored here if exists */ }; =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 */ +}; /* * The remap event */ --=20 2.51.0 From nobody Thu Oct 2 23:53:20 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 5C9E0321F59; Tue, 9 Sep 2025 11:06:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416005; cv=none; b=chOHeZXJc16Zw/J1BEzGpvuTGMpAPNO92NGUODOKUiJVLGnd/DiovYEpEbx9rCM+YuORf1zmQ8Y4Wi2CbiYvLO0G7DYUPv+8d1f0HBjvsEKG0m/pWCNUv+A+tHh1tPG8nBbj6v9O8xuUAhZ+sVeeswvdUcXxamZrQKLEVKr2STA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416005; c=relaxed/simple; bh=ivX0frZefsWabktsbWppiasU1QZKTjoShPymhWDyYc8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HHB6CxFiEMy5EE6nYCTDEctwAavX+JeyAubLwfK2okaIfXrh8VK8gE1EIm3vUv9YGkramo7+8c0Pe4vwnLms+aUeCtt6B41Emxo4AHTH+8Dv9ecy+2kq81G21ZCP+fOgvwAfZE02pLHUR2J9Kij0o2gGuDiF606QO5CAT/AxCbE= 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=e4rG0vWi; arc=none smtp.client-ip=216.71.154.42 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="e4rG0vWi" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416003; x=1788952003; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ivX0frZefsWabktsbWppiasU1QZKTjoShPymhWDyYc8=; b=e4rG0vWivk5gCLW6ErmW4TsIA8qmwH3LDdQj7IT0rnyvQVeDJHlYHw+V 5ani1F8V/d+5rRuSqN7Z2laHqw/MAYLd6m3zVatK2XZcVzNtUEzTi9Qga vVK4A6F5XGa/fL5tiaWl2rGfSRb6eW7DQXOjpKT5/742gT92+LNGwKzoJ vwbMl4pUdIDqRjID3CO7OIo5XiuYJQK7jTCjL9QvytBPXDI72HW2qfb+y gtd4eHvXuA54B9mxTtj7If7jx7P4KU4fjeUZHlxnXfJn9KShDBhBWsEiY hQA9tLyBLUGhd79ih0I3zWOhfpVqPCri51gZiOLA8ju4ZIwCDJr2nGabb g==; X-CSE-ConnectionGUID: A2MOpbnvTMOkVQEPcxlDoA== X-CSE-MsgGUID: w7CG3L1qQQaKyNgpPnVnVA== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112809957" 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; 09 Sep 2025 19:06:43 +0800 IronPort-SDR: 68c00a43_/A97EwXHrTnQ9nj14HF3ru9iq/vN/7u5JiofPQ2HLloSH2C +QMT50S0LxDMSxu0LcD+4dhF4pFdd48E1PTCKkw== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:43 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 05/16] blktrace: factor out recording a blktrace event Date: Tue, 9 Sep 2025 13:06:00 +0200 Message-Id: <20250909110611.75559-6-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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 the recording of a blktrace event into its own function, deduplicating the code. This also enables recording different versions of the blktrace protocol later on. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 89 +++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 4a642a812854..5db0c1a4ef5e 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -63,6 +63,34 @@ static int blk_probes_ref; static void blk_register_tracepoints(void); static void blk_unregister_tracepoints(void); =20 +static void record_blktrace_event(struct blk_io_trace *t, pid_t pid, int c= pu, + sector_t sector, int bytes, u32 what, + dev_t dev, int error, u64 cgid, + ssize_t cgid_len, void *pdu_data, int pdu_len) + +{ + /* + * These two are not needed in ftrace as they are in the + * generic trace_entry, filled by tracing_generic_entry_update, + * but for the trace_event->bin() synthesizer benefit we do it + * here too. + */ + t->cpu =3D cpu; + t->pid =3D pid; + + t->sector =3D sector; + t->bytes =3D bytes; + t->action =3D what; + t->device =3D dev; + t->error =3D error; + t->pdu_len =3D pdu_len + cgid_len; + + if (cgid_len) + memcpy((void *)t + sizeof(*t), &cgid, cgid_len); + if (pdu_len) + memcpy((void *)t + sizeof(*t) + cgid_len, pdu_data, pdu_len); +} + /* * Send out a notify message. */ @@ -86,7 +114,12 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= int action, if (!event) return; t =3D ring_buffer_event_data(event); - goto record_it; + record_blktrace_event(t, pid, cpu, 0, 0, + action | (cgid ? __BLK_TN_CGROUP : 0), + bt->dev, 0, cgid, cgid_len, (void *)data, + len); + trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); + return; } =20 if (!bt->rchan) @@ -96,18 +129,11 @@ static void trace_note(struct blk_trace *bt, pid_t pid= , int action, if (t) { t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; t->time =3D ktime_to_ns(ktime_get()); -record_it: - t->device =3D bt->dev; - t->action =3D action | (cgid ? __BLK_TN_CGROUP : 0); - t->pid =3D pid; - t->cpu =3D cpu; - t->pdu_len =3D len + cgid_len; - if (cgid_len) - memcpy((void *)t + sizeof(*t), &cgid, cgid_len); - memcpy((void *) t + sizeof(*t) + cgid_len, data, len); - - if (blk_tracer) - trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); + + record_blktrace_event(t, pid, cpu, 0, 0, + action | (cgid ? __BLK_TN_CGROUP : 0), + bt->dev, 0, cgid, cgid_len, (void *)data, + len); } } =20 @@ -261,7 +287,12 @@ static void __blk_add_trace(struct blk_trace *bt, sect= or_t sector, int bytes, if (!event) return; t =3D ring_buffer_event_data(event); - goto record_it; + + record_blktrace_event(t, pid, cpu, sector, bytes, what, bt->dev, + error, cgid, cgid_len, pdu_data, pdu_len); + + trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); + return; } =20 if (unlikely(tsk->btrace_seq !=3D blktrace_seq)) @@ -280,32 +311,10 @@ static void __blk_add_trace(struct blk_trace *bt, sec= tor_t sector, int bytes, t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; t->sequence =3D ++(*sequence); t->time =3D ktime_to_ns(ktime_get()); -record_it: - /* - * These two are not needed in ftrace as they are in the - * generic trace_entry, filled by tracing_generic_entry_update, - * but for the trace_event->bin() synthesizer benefit we do it - * here too. - */ - t->cpu =3D cpu; - t->pid =3D pid; - - t->sector =3D sector; - t->bytes =3D bytes; - t->action =3D what; - t->device =3D bt->dev; - t->error =3D error; - t->pdu_len =3D pdu_len + cgid_len; - - if (cgid_len) - memcpy((void *)t + sizeof(*t), &cgid, cgid_len); - if (pdu_len) - memcpy((void *)t + sizeof(*t) + cgid_len, pdu_data, pdu_len); - - if (blk_tracer) { - trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); - return; - } + + record_blktrace_event(t, pid, cpu, sector, bytes, what, + bt->dev, error, cgid, cgid_len, + pdu_data, pdu_len); } =20 local_irq_restore(flags); --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 A7B8C322546; Tue, 9 Sep 2025 11:06:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416009; cv=none; b=SjImhB3hu8/vV4IovTudDp2U/a5I2J07tDPLIPNk6Mdrbxxc2wVpSWyhYRuVI8bHmwuCN8bO+GvDTm8QS6cNUXsXwtoP8UkplrLsMLhil5EigG/Fk3LBFPaxE2ynDA6A7ZSoZIFmv5BwR640F2J+52vC7Wa7iEKc75k22HchObo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416009; c=relaxed/simple; bh=LbDNLaHybVzVZqlmCEc8V9yBV8bvIrwzYqGVl5WMDVw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oyvyKO0gOsN7shqMcBJ9ZGEHAXSRHMp+PStcFXvNM2x3W1oqI+KACJThCPZ2Inxwz8oRkqRQRF/h1JhtLr6dMdXA68tUyIBuGmAOUomYyoO/5BqEwdaaQmtRdAkeXnvpXRjrit8bUlKIPZMHkpWgeCx/GVvLuFOuLfQAw+DYBdQ= 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=hRmVNMf3; arc=none smtp.client-ip=216.71.154.42 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="hRmVNMf3" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416008; x=1788952008; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LbDNLaHybVzVZqlmCEc8V9yBV8bvIrwzYqGVl5WMDVw=; b=hRmVNMf33c9z7969D2wJY1PYrDXzdRHquP1A9K5i62pp59Y7Z04wapQf q+4etW0PdwAb3kMKI4oRvEBInm1bDZ0MRJGux+Qh1e7wcLihY7JSO2Hhp MTLO+YIDwvIFlLC545V1eV8sD684EExiuoCiWnlG+xzkM52V/pQgvP4LH 8w7gLL3rnocE2gW76NIoaSSyar7f65VtQa64vxYBxQGupms9EsAGRGv96 6fwe1a29SritxosLljyY6GqY1HZm/GLQtsTCzPM6yTUJSWTJla9CdgYAr N1Oh0roVkG0V6nCksI2q+myf6BNgDWJt44U9o+QOLOlFScbCIazxkEpTj Q==; X-CSE-ConnectionGUID: 7Z82lodPTnKqYceHJ0QI4Q== X-CSE-MsgGUID: Ww/Nm2x2TX6L8vn33+8heg== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810005" 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; 09 Sep 2025 19:06:47 +0800 IronPort-SDR: 68c00a47_+MydnkjkLGk73fWAk8QsnANVdII4+7B/8UMRz06VGkonFTs fsPckMYXNmTHltd1roXUFAC480IPXKlKqNCH7RA== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:47 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 06/16] blktrace: only calculate trace length once Date: Tue, 9 Sep 2025 13:06:01 +0200 Message-Id: <20250909110611.75559-7-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" De-duplicate the calculation of the trace length instead of doing the calculation twice, once for calling trace_buffer_lock_reserve() and once for calling relay_reserve(). Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 5db0c1a4ef5e..d06519957c25 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -104,13 +104,14 @@ static void trace_note(struct blk_trace *bt, pid_t pi= d, int action, int cpu =3D smp_processor_id(); bool blk_tracer =3D blk_tracer_enabled; ssize_t cgid_len =3D cgid ? sizeof(cgid) : 0; + size_t trace_len; =20 + trace_len =3D sizeof(*t) + cgid_len + len; if (blk_tracer) { buffer =3D blk_tr->array_buffer.buffer; trace_ctx =3D tracing_gen_ctx_flags(0); event =3D trace_buffer_lock_reserve(buffer, TRACE_BLK, - sizeof(*t) + len + cgid_len, - trace_ctx); + trace_len, trace_ctx); if (!event) return; t =3D ring_buffer_event_data(event); @@ -125,7 +126,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= int action, if (!bt->rchan) return; =20 - t =3D relay_reserve(bt->rchan, sizeof(*t) + len + cgid_len); + t =3D relay_reserve(bt->rchan, trace_len); if (t) { t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; t->time =3D ktime_to_ns(ktime_get()); @@ -254,6 +255,7 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, bool blk_tracer =3D blk_tracer_enabled; ssize_t cgid_len =3D cgid ? sizeof(cgid) : 0; const enum req_op op =3D opf & REQ_OP_MASK; + size_t trace_len; =20 if (unlikely(bt->trace_state !=3D Blktrace_running && !blk_tracer)) return; @@ -276,14 +278,14 @@ static void __blk_add_trace(struct blk_trace *bt, sec= tor_t sector, int bytes, return; cpu =3D raw_smp_processor_id(); =20 + trace_len =3D sizeof(*t) + pdu_len + cgid_len; if (blk_tracer) { tracing_record_cmdline(current); =20 buffer =3D blk_tr->array_buffer.buffer; trace_ctx =3D tracing_gen_ctx_flags(0); event =3D trace_buffer_lock_reserve(buffer, TRACE_BLK, - sizeof(*t) + pdu_len + cgid_len, - trace_ctx); + trace_len, trace_ctx); if (!event) return; t =3D ring_buffer_event_data(event); @@ -304,7 +306,7 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, * from coming in and stepping on our toes. */ local_irq_save(flags); - t =3D relay_reserve(bt->rchan, sizeof(*t) + pdu_len + cgid_len); + t =3D relay_reserve(bt->rchan, trace_len); if (t) { sequence =3D per_cpu_ptr(bt->sequence, cpu); =20 --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 17911320CDF; Tue, 9 Sep 2025 11:06:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416013; cv=none; b=YeNjHvdX/DCd0WiZRPECBUoZYbYOVtO5100qkut5+oStO4ONvs4hnoCYqbMM9kW3C7Bs4Rq2VwGxvzXnRA46XlifF17HSbmYR/k9/sCq+3RDiN7uBp+6bvcjUtG6Zq5BOYqU3JJlPBPevpQIcalyRIPmLwNUkx8YI3eXPZIaPXo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416013; c=relaxed/simple; bh=x3pZFGJDNQ/w9+kotR47LUEQH8ZtHRej2JzDn6otrLY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jVu7ajfqmGIkxLur1d1GQzxPizO/AVRWFFtjPUXdjM7cG2hmBxaF9ZvLyGN5c18viECdmMY3UTA59hPSltYd4KWF1OGeHaxkSLDLxa2jw9hwDEEmi3pUlbGvq/LtcLCYOSPoph0wQ93uZ/LC8T7D0Rr2YNqZdimPSa6fuDbZnow= 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=nVduiYQs; arc=none smtp.client-ip=216.71.154.42 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="nVduiYQs" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416012; x=1788952012; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=x3pZFGJDNQ/w9+kotR47LUEQH8ZtHRej2JzDn6otrLY=; b=nVduiYQs+WBLuhuL2toDDUxAa/8jki7GaIVejt5q8C1sILkyb5hjvPoB s+KJwutm019EYBlURTtNhVSuZleNOXmFa6annpDV19YZLGDdVAOfkaioY UQZTUagFEzZzC0WtQytRkKlA3GQb4STE6AkcZipXVK+5nsbGwN31kWqKy HLN3dXgRsBfgHEamggbHr9Lcz1QkepMJ2W03nV9ZaOPrgF+mu1HyJfSQt kwZGBj9kEHTyfsxUTDfi3v30jWEPEZIxCPVnfTIstu2e4xoBBpIU+D9FS knspLyyiscJ8P/U9rtNZ6gRmn2tjgBcgUKyK3Gx2YpdGTf87S4POtvLx2 Q==; X-CSE-ConnectionGUID: e3mDCNdGRbeGcF1nj4eytg== X-CSE-MsgGUID: Lo4qnDtTQwizw+uPwyylGA== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810079" 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; 09 Sep 2025 19:06:52 +0800 IronPort-SDR: 68c00a4b_DP5BTWUFWBBXPmgXFyrarNgQveza6twW2/+3YUvBIN/qhSV 7F6XYnvE2kMzSQYV9MLUcZmDYGQJFkd+tFgfzRA== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:52 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 07/16] blktrace: split out relaying a blktrace event Date: Tue, 9 Sep 2025 13:06:02 +0200 Message-Id: <20250909110611.75559-8-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Split out the code relaying a blktrace event to user-space using relayfs. This enables adding a second version supporting a new version of the protocol. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 50 ++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index d06519957c25..24eef7b116b5 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -91,6 +91,26 @@ static void record_blktrace_event(struct blk_io_trace *t= , pid_t pid, int cpu, memcpy((void *)t + sizeof(*t) + cgid_len, pdu_data, pdu_len); } =20 +static void relay_blktrace_event(struct blk_trace *bt, unsigned long seque= nce, + pid_t pid, int cpu, sector_t sector, int bytes, + u32 what, int error, u64 cgid, + ssize_t cgid_len, void *pdu_data, int pdu_len) +{ + struct blk_io_trace *t; + size_t trace_len =3D sizeof(*t) + pdu_len + cgid_len; + + t =3D relay_reserve(bt->rchan, trace_len); + if (!t) + return; + + t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; + t->sequence =3D sequence; + t->time =3D ktime_to_ns(ktime_get()); + + record_blktrace_event(t, pid, cpu, sector, bytes, what, bt->dev, error, + cgid, cgid_len, pdu_data, pdu_len); +} + /* * Send out a notify message. */ @@ -126,16 +146,9 @@ static void trace_note(struct blk_trace *bt, pid_t pid= , int action, if (!bt->rchan) return; =20 - t =3D relay_reserve(bt->rchan, trace_len); - if (t) { - t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; - t->time =3D ktime_to_ns(ktime_get()); - - record_blktrace_event(t, pid, cpu, 0, 0, - action | (cgid ? __BLK_TN_CGROUP : 0), - bt->dev, 0, cgid, cgid_len, (void *)data, - len); - } + relay_blktrace_event(bt, 0, pid, cpu, 0, 0, + action | (cgid ? __BLK_TN_CGROUP : 0), 0, cgid, + cgid_len, (void *)data, len); } =20 /* @@ -306,19 +319,10 @@ static void __blk_add_trace(struct blk_trace *bt, sec= tor_t sector, int bytes, * from coming in and stepping on our toes. */ local_irq_save(flags); - t =3D relay_reserve(bt->rchan, trace_len); - if (t) { - sequence =3D per_cpu_ptr(bt->sequence, cpu); - - t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION; - t->sequence =3D ++(*sequence); - t->time =3D ktime_to_ns(ktime_get()); - - record_blktrace_event(t, pid, cpu, sector, bytes, what, - bt->dev, error, cgid, cgid_len, - pdu_data, pdu_len); - } - + sequence =3D per_cpu_ptr(bt->sequence, cpu); + (*sequence)++; + relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, what, + error, cgid, cgid_len, pdu_data, pdu_len); local_irq_restore(flags); } =20 --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 585E432277D; Tue, 9 Sep 2025 11:06:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416018; cv=none; b=amAMEYePBrd49r8q2zU4azfbVKOIJySQELutImlF1RtX4faNqdA50D+PNg7RsGQF7PBzf8LpBDdsu8thmlLpzwX5kUzw8/81D9v64td1ss6YNWybqZrTfL8X4NJ6yk/aIWQmiQbSmIYyrKcgSKVeSwkqbmjsOLSCGVyrUn4WuZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416018; c=relaxed/simple; bh=1gUjp/rAf5hBkU+gm0twc+iRy6v7rrG/Iwk4m1W73ZA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rQjg+RZwskXZFYxGrQ1Grxr3qFewoiX9mmex+JD4X1JLQfgi+PGzV37M5NmieIWCfLwDOumjpXYsTeX4XFHvtAlSpI8g3lmKvH8Ad7r+dmVUdNiucg6zx3St6MSsYr6vc/m1g8cP6CZEVcbvooCtlz4bcWX9AUiS1WH0XAUPthU= 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=Zn+6OM4L; arc=none smtp.client-ip=216.71.154.42 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="Zn+6OM4L" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416016; x=1788952016; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1gUjp/rAf5hBkU+gm0twc+iRy6v7rrG/Iwk4m1W73ZA=; b=Zn+6OM4LXxqDz2vvA9DAFrMrJHrTCaP0MRyC8TZJQAaunSgiK/uOEGxt 0L+TnB77s3mScUmxWrHHQhTjCCVo3ojvmQJIL3mKN+uNpQLlZHgL7TjXV RubSwjT67nfwrSxjmUOaQDR3e3sQpwZ5UpI6D45tNxSZKI7p0xBfd3myq aKrULxvgVAZokm/QimvRpxojwY4X0nEHzjzTnJAvzxfBbRUxsCwh08Qqe kM8lX4WGRFu+bTZs+KXrT9VsAUFncNf99nJTLZXCgSWrWyz2ZCXD1bGiQ XV+vKiC/QaiZQglHic5gz+5pjpKTK1VIZk3empD/N0KyiTbpFHuv86NKu g==; X-CSE-ConnectionGUID: 17K6U9IaR7uz2fx9eCBxqA== X-CSE-MsgGUID: J+BbZ3ggRnWjfq7WYZaftQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810091" 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; 09 Sep 2025 19:06:56 +0800 IronPort-SDR: 68c00a50_IdHAY/kT6bvdQSJud+61fCU387DiiWYgWmA9br/De7tAeNn jX+xs/Zyhvnzll8aNZi7rekgWJ9QPk7GWP5gLAw== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:06:56 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 08/16] blktrace: change the internal action to 64bit Date: Tue, 9 Sep 2025 13:06:03 +0200 Message-Id: <20250909110611.75559-9-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Change the internal use of the action in blktrace to 64bit. Although for now only the lower 32bits will be used. With the upcoming version 2 of the blktrace user-space protocol the upper 32bit will also be utilized. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 24eef7b116b5..5b97dc5e2cfd 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -127,6 +127,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= int action, size_t trace_len; =20 trace_len =3D sizeof(*t) + cgid_len + len; + action =3D lower_32_bits(action | (cgid ? __BLK_TN_CGROUP : 0)); if (blk_tracer) { buffer =3D blk_tr->array_buffer.buffer; trace_ctx =3D tracing_gen_ctx_flags(0); @@ -136,9 +137,8 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= int action, return; t =3D ring_buffer_event_data(event); record_blktrace_event(t, pid, cpu, 0, 0, - action | (cgid ? __BLK_TN_CGROUP : 0), - bt->dev, 0, cgid, cgid_len, (void *)data, - len); + action, bt->dev, 0, cgid, cgid_len, + (void *)data, len); trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); return; } @@ -146,8 +146,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= int action, if (!bt->rchan) return; =20 - relay_blktrace_event(bt, 0, pid, cpu, 0, 0, - action | (cgid ? __BLK_TN_CGROUP : 0), 0, cgid, + relay_blktrace_event(bt, 0, pid, cpu, 0, 0, action, 0, cgid, cgid_len, (void *)data, len); } =20 @@ -222,7 +221,7 @@ void __blk_trace_note_message(struct blk_trace *bt, } EXPORT_SYMBOL_GPL(__blk_trace_note_message); =20 -static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector, +static int act_log_check(struct blk_trace *bt, u64 what, sector_t sector, pid_t pid) { if (((bt->act_mask << BLK_TC_SHIFT) & what) =3D=3D 0) @@ -253,7 +252,7 @@ static const u32 ddir_act[2] =3D { BLK_TC_ACT(BLK_TC_RE= AD), * blk_io_trace structure and places it in a per-cpu subbuffer. */ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int byt= es, - const blk_opf_t opf, u32 what, int error, + const blk_opf_t opf, u64 what, int error, int pdu_len, void *pdu_data, u64 cgid) { struct task_struct *tsk =3D current; @@ -303,8 +302,9 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, return; t =3D ring_buffer_event_data(event); =20 - record_blktrace_event(t, pid, cpu, sector, bytes, what, bt->dev, - error, cgid, cgid_len, pdu_data, pdu_len); + record_blktrace_event(t, pid, cpu, sector, bytes, + lower_32_bits(what), bt->dev, error, + cgid, cgid_len, pdu_data, pdu_len); =20 trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); return; @@ -321,8 +321,9 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, local_irq_save(flags); sequence =3D per_cpu_ptr(bt->sequence, cpu); (*sequence)++; - relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, what, - error, cgid, cgid_len, pdu_data, pdu_len); + relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, + lower_32_bits(what), error, cgid, cgid_len, + pdu_data, pdu_len); local_irq_restore(flags); } =20 @@ -841,7 +842,7 @@ blk_trace_request_get_cgid(struct request *rq) * **/ static void blk_add_trace_rq(struct request *rq, blk_status_t error, - unsigned int nr_bytes, u32 what, u64 cgid) + unsigned int nr_bytes, u64 what, u64 cgid) { struct blk_trace *bt; =20 @@ -905,7 +906,7 @@ static void blk_add_trace_rq_complete(void *ignore, str= uct request *rq, * **/ static void blk_add_trace_bio(struct request_queue *q, struct bio *bio, - u32 what, int error) + u64 what, int error) { struct blk_trace *bt; =20 @@ -971,7 +972,7 @@ static void blk_add_trace_unplug(void *ignore, struct r= equest_queue *q, bt =3D rcu_dereference(q->blk_trace); if (bt) { __be64 rpdu =3D cpu_to_be64(depth); - u32 what; + u64 what; =20 if (explicit) what =3D BLK_TA_UNPLUG_IO; --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 9F1DD322A1C; Tue, 9 Sep 2025 11:07:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416022; cv=none; b=hWTWqQngtnrU+wEsTsZs2Hi3+c6W1oXsCg4pbe/26Yn/zMP+tTZ+hmRrIFx1SNsq0itL9c2+6eiaZzkduKKez2MlEC1jlaW2faCTm1uxnkqH8+PqrkJcCsCu7IHyRA+YLhCWlAMEc7aNrB9UzCzTXPSJCpS/iCxz11lKmGTcSO4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416022; c=relaxed/simple; bh=xZZf8jB01CDi9ndqTpiZS4ugKpC/h2xJEYszhsUzzkY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jxYV2cJwE5JBEWM3b5l70DLWW7hQQkfkFrle3tiUrGX8UBZCi+6FK3t8C+re47ODIsKvg05J4hzdDHCH7O90F7Ba6tfzvYsv9UHn8GiXJPcV2miOmJ6v9O50qBNKmenO0j560pP5MX0avc8jXCsXpx3TLHduzQZfrfAq9bPy4aE= 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=WB+3doUF; arc=none smtp.client-ip=216.71.154.42 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="WB+3doUF" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416021; x=1788952021; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xZZf8jB01CDi9ndqTpiZS4ugKpC/h2xJEYszhsUzzkY=; b=WB+3doUFSWPSDLuwBXRgtUqy45/NKr3a4Pxj8SFgbWTW0e6OjsUUoiXm cJX2UtKZnu1i4rAKtCP2TzEgC2oueiDrbMZAuxYFXfMHrXxlol8nrRFsi dj9DUOOW3mPwqdG/l9thq/zRhrGG4h6EAAmYnVH1ZVbwmLbX4ikC2Gxiz 92A3vnZaJ5mFsjFWbUO0bLo6TU+8AT1zG7mcmsDlXRnay9A/hscWHr0Db 2wCpa2jVwmwuPW2GPtUM4ZCiIzjcgulEkYW4p9P0LNp4SsQCOMrOTvLMi b2eVO+MyJTgc+PsGTzF8cIm+xMbik4v1vEPFRwlSZ1VNJp3Mw4kRvurke w==; X-CSE-ConnectionGUID: P1vXulcSTcSDZ5IjcGWxmQ== X-CSE-MsgGUID: jCxngcu9RxSh/S4Ql0xrEQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810102" 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; 09 Sep 2025 19:07:00 +0800 IronPort-SDR: 68c00a54_UYXKVw0xCjBUhy06X5AFOLAOE9PlquvCDsqxWvDUycBnPsp DJSjrR4I0lnjXNQuCYXDaLQ/0IT5dunY2KkQucg== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:00 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:06: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 09/16] blktrace: remove struct blk_io_trace from __blk_add_trace Date: Tue, 9 Sep 2025 13:06:04 +0200 Message-Id: <20250909110611.75559-10-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Now that relaying the blktrace protocol information via relayfs has been removed from __blk_add_trace(), it only uses 'struct blk_io_trace' for the ftrace portion of the function. Directly pass in the reserved area of the ftrace ring buffer to record_blktrace_event(). Signed-off-by: Johannes Thumshirn --- kernel/trace/blktrace.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 5b97dc5e2cfd..14fb4e7296cf 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -258,7 +258,6 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, struct task_struct *tsk =3D current; struct ring_buffer_event *event =3D NULL; struct trace_buffer *buffer =3D NULL; - struct blk_io_trace *t; unsigned long flags =3D 0; unsigned long *sequence; unsigned int trace_ctx =3D 0; @@ -290,19 +289,19 @@ static void __blk_add_trace(struct blk_trace *bt, sec= tor_t sector, int bytes, return; cpu =3D raw_smp_processor_id(); =20 - trace_len =3D sizeof(*t) + pdu_len + cgid_len; if (blk_tracer) { tracing_record_cmdline(current); =20 buffer =3D blk_tr->array_buffer.buffer; trace_ctx =3D tracing_gen_ctx_flags(0); + trace_len =3D sizeof(struct blk_io_trace) + pdu_len + cgid_len; event =3D trace_buffer_lock_reserve(buffer, TRACE_BLK, trace_len, trace_ctx); if (!event) return; - t =3D ring_buffer_event_data(event); =20 - record_blktrace_event(t, pid, cpu, sector, bytes, + record_blktrace_event(ring_buffer_event_data(event), + pid, cpu, sector, bytes, lower_32_bits(what), bt->dev, error, cgid, cgid_len, pdu_data, pdu_len); =20 --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 00BAF322A3F; Tue, 9 Sep 2025 11:07:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416026; cv=none; b=i2T7QqdUAB4dVpETjZZsz+YJgO17au9bWnJfW+JKW6EquWAXMQ0jOHCmy63V4i/EyJUATP11QX9Ziyfn9uDLk1IgMJ2KKUMIIzhToX/QN0d6KM1wzmWw7kpHDt4QFdVN+GhLJAuhfll8R6+Kjv/Xq1yp+BwHR7NuTi4Ybctuf6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416026; c=relaxed/simple; bh=YD57R6IOf+2DW85lb/mytcLQw8QA0ltwv4UTXCmXK+I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=S61Dn36g5KqOhpf+C51HQ02hkpgjFBxecbA7CcOSlmgfHCo3mT00zZWl/tn7OXda6+IX2u0vCV9IvxU9ruBHvtsyX5IRN8fFs18osydaR+Ltsc5pndfWNqrlCyY+pBW7zVtic7+HTFqLjjl/hR/70ITbilaKzmv39tEKkAGl390= 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=rG5BUqBr; arc=none smtp.client-ip=216.71.154.42 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="rG5BUqBr" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416025; x=1788952025; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YD57R6IOf+2DW85lb/mytcLQw8QA0ltwv4UTXCmXK+I=; b=rG5BUqBrqZp64M9LBXjaO2KdhVw569W2atDlad1vOe8PipvuszAt/Mdd n7eVt3EjAzgNsK9E9fD7JuEdpbOJ8mc+eI1KtZg8zPmWQoyMI0mdCLZoX Xj/PAihRceE2iAGeIM2S0DtdOidnrTKLt1dfASUZ37zt0g2fH1Q19i+J9 /4MJUTakTGkUejwTnMm1762H2fFCNWMQQff3eCgVUsyKpflu/8X4MMcF5 OZ3bHpp79GNpjMdOM4uzr+n8CRwlM6fhY38YGf/rqm8sZdlAQfJIFY/Pf eZ9saNkrLPhp7E6e0x9FWORgsDrAXteHWH6svTRDw/8K67oz9Ku4ghwVW w==; X-CSE-ConnectionGUID: r+teHtsYQW24QX3nCSZAIQ== X-CSE-MsgGUID: d7vBeYl6T16yNiBef+kMfQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810106" 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; 09 Sep 2025 19:07:05 +0800 IronPort-SDR: 68c00a58_+fzFfcg4SZmSHh/VQX/tSaQ7CzUkrFvXHZFoDzolg6gFgAu zeJp4R5kVKsFgJOoBM5yI38PzfjpzaA0ArZPf+g== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:05 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07: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 10/16] blktrace: differentiate between blk_io_trace versions Date: Tue, 9 Sep 2025 13:06:05 +0200 Message-Id: <20250909110611.75559-11-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Differentiate between blk_io_trace and blk_io_trace2 when relaying to user-space depending on which version has been requested by the blktrace utility. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 62 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 14fb4e7296cf..6dc7396c26c2 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -91,6 +91,29 @@ static void record_blktrace_event(struct blk_io_trace *t= , pid_t pid, int cpu, memcpy((void *)t + sizeof(*t) + cgid_len, pdu_data, pdu_len); } =20 +static void record_blktrace_event2(struct blk_io_trace2 *t2, pid_t pid, in= t cpu, + sector_t sector, int bytes, u64 what, + dev_t dev, int error, u64 cgid, + ssize_t cgid_len, void *pdu_data, + int pdu_len) + +{ + t2->pid =3D pid; + t2->cpu =3D cpu; + + t2->sector =3D sector; + t2->bytes =3D bytes; + t2->action =3D what; + t2->device =3D dev; + t2->error =3D error; + t2->pdu_len =3D pdu_len + cgid_len; + + if (cgid_len) + memcpy((void *)t2 + sizeof(*t2), &cgid, cgid_len); + if (pdu_len) + memcpy((void *)t2 + sizeof(*t2) + cgid_len, pdu_data, pdu_len); +} + static void relay_blktrace_event(struct blk_trace *bt, unsigned long seque= nce, pid_t pid, int cpu, sector_t sector, int bytes, u32 what, int error, u64 cgid, @@ -111,6 +134,26 @@ static void relay_blktrace_event(struct blk_trace *bt,= unsigned long sequence, cgid, cgid_len, pdu_data, pdu_len); } =20 +static void relay_blktrace_event2(struct blk_trace *bt, unsigned long sequ= ence, + pid_t pid, int cpu, sector_t sector, + int bytes, u64 what, int error, u64 cgid, + ssize_t cgid_len, void *pdu_data, int pdu_len) +{ + struct blk_io_trace2 *t; + size_t trace_len =3D sizeof(struct blk_io_trace2) + pdu_len + cgid_len; + + t =3D relay_reserve(bt->rchan, trace_len); + if (!t) + return; + + t->magic =3D BLK_IO_TRACE_MAGIC | BLK_IO_TRACE2_VERSION; + t->sequence =3D sequence; + t->time =3D ktime_to_ns(ktime_get()); + + record_blktrace_event2(t, pid, cpu, sector, bytes, what, bt->dev, error, + cgid, cgid_len, pdu_data, pdu_len); +} + /* * Send out a notify message. */ @@ -146,8 +189,12 @@ static void trace_note(struct blk_trace *bt, pid_t pid= , int action, if (!bt->rchan) return; =20 - relay_blktrace_event(bt, 0, pid, cpu, 0, 0, action, 0, cgid, - cgid_len, (void *)data, len); + if (bt->version =3D=3D 1) + relay_blktrace_event(bt, 0, pid, cpu, 0, 0, action, 0, cgid, + cgid_len, (void *)data, len); + else + relay_blktrace_event2(bt, 0, pid, cpu, 0, 0, action, 0, cgid, + cgid_len, (void *)data, len); } =20 /* @@ -320,9 +367,14 @@ static void __blk_add_trace(struct blk_trace *bt, sect= or_t sector, int bytes, local_irq_save(flags); sequence =3D per_cpu_ptr(bt->sequence, cpu); (*sequence)++; - relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, - lower_32_bits(what), error, cgid, cgid_len, - pdu_data, pdu_len); + if (bt->version =3D=3D 1) + relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, + lower_32_bits(what), error, cgid, + cgid_len, pdu_data, pdu_len); + else + relay_blktrace_event2(bt, *sequence, pid, cpu, sector, bytes, + what, error, cgid, cgid_len, pdu_data, + pdu_len); local_irq_restore(flags); } =20 --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 608A1322C89; Tue, 9 Sep 2025 11:07:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416031; cv=none; b=gI+7Gzo9BW2RiHffUZ5SYymnpMJgBCg80zZsYCGItg4yoyFpb3UYGtow9BeMZVrMRyY8lVXWm5euJn6MmWrfovVCww6TwIKQybiIk3HkekfSk/rN/ltjwzE4SRb89OMKtP4SmlJCzevRfX+enM1GlAJMDF5zZMZ899bqhfn6SSA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416031; c=relaxed/simple; bh=MVeKOflXpQenr21iMEzmsz3U1agvLQMPi/S1gt4iu6M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FfYFtb3CrlctV1YntY8SIMmxrFVSbRI2gkbPgs4ol/8qMl5Nj0f8tks15XOvSBMfjiXsdwWKo8S1vwFfb/1UZ58+wm8E8pYoTDzWsX8vvuXfpuot+pxtjUV5yILZlUHU9Gd89b+s/kq/M41fX6YfAlx/9Qn7n7cBDQiF8fHlZOc= 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=kaflyUnn; arc=none smtp.client-ip=216.71.154.42 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="kaflyUnn" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416029; x=1788952029; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MVeKOflXpQenr21iMEzmsz3U1agvLQMPi/S1gt4iu6M=; b=kaflyUnnZxIOImx+iWZRy4WKbRYdH2WACiOxKApvYGiqZ+LRRKyINJuW L3rTVPfjNCXuJvnmigBocJVUwNdhlENi0L8FIvRmw5nShOZggdtNXUHaE sZt5aBElUUih66sAO7Tmty4dGfzthZse1pptfPzyqOIMWCOHcxHsm1hVt niJUFoFUsc0cbWSymodc9ShzpHYrVhjlD85Ont2SbRRvqTWmH77Scs1sM k4n5IdfFVDtz++vRaCTJOrLGst9FF5v/a1h0OFF/oOnQW4BvT4FuMkgyK t6Qmi7ZWousLmv4/R+oTHA55/FYqAs+JgOmaae3JWhdbuu0b7JqBzTP8G A==; X-CSE-ConnectionGUID: 7zh25NpNR9eXjL+NLIt4yw== X-CSE-MsgGUID: IPU/jB03TumdA9tHfzN6jQ== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810113" 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; 09 Sep 2025 19:07:09 +0800 IronPort-SDR: 68c00a5d_7Mp0fSuDlUc7bfEz6T+h63ukTbsyPn1Asa5yWo12xiKi/a9 keytbVlZoUSRcbpLuUCyIyHZqSLIoHQ/0XexJ3Q== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:09 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07: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 11/16] blktrace: untangle if/else sequence in __blk_add_trace Date: Tue, 9 Sep 2025 13:06:06 +0200 Message-Id: <20250909110611.75559-12-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Untangle the if/else sequence setting the trace action in __blk_add_trace() and turn it into a switch statement for better extensibility. Signed-off-by: Johannes Thumshirn Reviewed-by: Christoph Hellwig --- kernel/trace/blktrace.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 6dc7396c26c2..82ad626d6202 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -324,10 +324,19 @@ static void __blk_add_trace(struct blk_trace *bt, sec= tor_t sector, int bytes, what |=3D MASK_TC_BIT(opf, META); what |=3D MASK_TC_BIT(opf, PREFLUSH); what |=3D MASK_TC_BIT(opf, FUA); - if (op =3D=3D REQ_OP_DISCARD || op =3D=3D REQ_OP_SECURE_ERASE) + + switch (op) { + case REQ_OP_DISCARD: + case REQ_OP_SECURE_ERASE: what |=3D BLK_TC_ACT(BLK_TC_DISCARD); - if (op =3D=3D REQ_OP_FLUSH) + break; + case REQ_OP_FLUSH: what |=3D BLK_TC_ACT(BLK_TC_FLUSH); + break; + default: + break; + } + if (cgid) what |=3D __BLK_TA_CGROUP; =20 --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 B672A3218DF; Tue, 9 Sep 2025 11:07:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416035; cv=none; b=VIwSEXFUrEU1i/iY6tDhHA13ryJYBjv+it12nuxpvYb5j/itmu/W7zvOPoBGBj3Ht/0X+wLtCKL90pb8I/zHTgtRcYDymAQFDHA3qn0JmN7NqYcljjmrpJLv/0yl2RxOj8KcB3dreqM6VRWXP5dOjthxRbCdLRclZzp8XR2iA6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416035; c=relaxed/simple; bh=+QFmlXVEpiW4JKH1FtB3NrBB+lEsmo15zfarP+RRCds=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Uqj9s4t1HbySoMZQiJM+STuE5jwpjBoo5VAfBLvHiO74IhT/t3FjAiGTjtXZwutGNdvKakOyhqgcp5l9gOLA96/PIdqb+I6m4Jwn+xNkU+L4Q46kxjrPV7uqA2R6XkZZ69LKeabA9cWCfQkx2KY8fPd97OmJLIqj5NYkDtmEDZ4= 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=V/zW033b; arc=none smtp.client-ip=216.71.154.42 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="V/zW033b" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416034; x=1788952034; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+QFmlXVEpiW4JKH1FtB3NrBB+lEsmo15zfarP+RRCds=; b=V/zW033ba0cD0//Yg7ziBo471BcGjxH84nxVE0OOUMznB9T4kX/lBIGE VkXiz3F8yLnuPm1BB1fnWFYEgWitmw2ZeW524FNRC7+VYZd7UTi13N9Yx wgrbT/qV+pm9ZP7pIQAZwCOaUxtyYlN/IANwETT0UksQ30LOSVZMD7j4s sIdHk7ovSQFk9IziZHnUomuNVsxVfuaempjj7wIxYWMWKTYKd1ofcO8ii LCsnzeChv0VVnUR73Jmitm2NOR39WMgtNH72cvqfvGYk6rhOG0SQQISN3 D6j1hLPMXW3Qb926l7ZIMx+OnkkQaakuU6i67+jXqnHU9fyJerJi5NRa+ Q==; X-CSE-ConnectionGUID: 34GzjRi8QCep+5PjuRBN0w== X-CSE-MsgGUID: KqC6FBqfT+6tJn3xSWxRSA== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810173" 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; 09 Sep 2025 19:07:13 +0800 IronPort-SDR: 68c00a61_sdBWZzDU61BYMdy3EnRaR0OAJ5m8JFx1rNKQxv05bP4DrfZ 3XMgUSHP+xCxeX28RMpvtxP2jXQHa9ecjapct/w== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:13 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07: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 12/16] blktrace: add block trace commands for zone operations Date: Tue, 9 Sep 2025 13:06:07 +0200 Message-Id: <20250909110611.75559-13-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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 block trace commands for zone operations. These are added as a separate set of 'block trace commands' shifted by 32bit so that they do not interfere with the old 16bit wide trace command field in 'struct blk_io_trace' action. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 11 +++++++++++ kernel/trace/blktrace.c | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index 01779f84d09f..d5047467c8ee 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -29,8 +29,19 @@ enum blktrace_cat { 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 diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 82ad626d6202..62f6cfcee4f6 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -333,6 +333,24 @@ static void __blk_add_trace(struct blk_trace *bt, sect= or_t sector, int bytes, case REQ_OP_FLUSH: what |=3D BLK_TC_ACT(BLK_TC_FLUSH); break; + case REQ_OP_ZONE_APPEND: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_APPEND); + break; + case REQ_OP_ZONE_RESET: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_RESET); + break; + case REQ_OP_ZONE_RESET_ALL: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_RESET_ALL); + break; + case REQ_OP_ZONE_FINISH: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_FINISH); + break; + case REQ_OP_ZONE_OPEN: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_OPEN); + break; + case REQ_OP_ZONE_CLOSE: + what |=3D BLK_TC_ACT2(BLK_TC_ZONE_CLOSE); + break; default: break; } --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 2D5DE326D7E; Tue, 9 Sep 2025 11:07:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416039; cv=none; b=U8BdFwFKFKxLDd3gw+XpzzFNnnex6nhtg2T9CK2QBxSVEQOgb9AWZDbJkL5eINN/6SWPGlhVlOQQgwM0G5q32i/s4lGgaEkY5eRWduoJDAB0g8xUnxMzCYPM3LRn2AXzmHxbsDw8i1kKOqEDPSH9UF+2JkzZ9tZkJp39sVFVD6A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416039; c=relaxed/simple; bh=v9S9YA7POwnG0gnHcQwpf/aO6DOFbgB5FeqDaZbKBwg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PXQdui+i0yQqhchIoJzHP9YKAYEQRjvwsMHW5aCqM+/Hf5dWZnUKW4vZ944NHfP3uCPZtc+fRLl9eFmSyTqTVu/Mo/uLtGBXIQPyOXvqBf9cYkdGNK5iJLsmFPNEkrYT7blfKyUo3WVrwqVJLOpyJYNfeC+atH8qtxlmzNfZJIo= 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=Xj46sOyG; arc=none smtp.client-ip=216.71.154.42 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="Xj46sOyG" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416038; x=1788952038; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v9S9YA7POwnG0gnHcQwpf/aO6DOFbgB5FeqDaZbKBwg=; b=Xj46sOyGyo3PCafvv71OmIPTzbw7eUOVNF0wEp5PgBpKSC9FUMB0M6e6 2ZhqFiCCH3NggiJ3vyhqHQVfBH/mWVyx35TNR5J85puL0tJdJC6CpAIvS 0H6+8iF/ct6qav6AUNNnblvE8c66mj52yPPrhrFDib4FqSH2z7aomhIlu NXjJQX+0KVd4UqYUYznSu3wQBETMS52OmlzLO4pz/GPUJoWxPnWjHlti8 XtVaL5udsqBx7hdHOraCRSzCLhAS8lApT5ZWNFFaTj+FasJQDZlo3SRy1 LM16A2uFNSghgbQAZ6tWKwUg6M+N8A2YowbXnUHHLFsiUAKy2zFG7Axyr A==; X-CSE-ConnectionGUID: Twuk32YmQ0CFsj3s6sAVIw== X-CSE-MsgGUID: 551YRJ3+TEypQLWVnjCAGg== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810178" 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; 09 Sep 2025 19:07:18 +0800 IronPort-SDR: 68c00a66_KZIltkz7HyIuUiZRSTjQmE+Lm0q+cTvfVOUbVeHycb7K7Sx ZyEAMcKHkJ4yh6aQWxAupud7hO12JhKLODaFa3w== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:18 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07: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 13/16] blktrace: expose ZONE APPEND completions to blktrace Date: Tue, 9 Sep 2025 13:06:08 +0200 Message-Id: <20250909110611.75559-14-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Expose ZONE APPEND completions as a block trace completion action to blktrace. As tracing of zoned block commands needs the upper 32bit of the widened 64bit action, only add traces to blktrace if user-space has requested version 2 of the blktrace protocol. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 3 +++ kernel/trace/blktrace.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index d5047467c8ee..c75ae82b2dbc 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -99,6 +99,9 @@ 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_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)) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 62f6cfcee4f6..fea6e63ee27c 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -972,6 +972,22 @@ static void blk_add_trace_rq_complete(void *ignore, st= ruct request *rq, blk_trace_request_get_cgid(rq)); } =20 +static void blk_add_trace_zone_update_request(void *ignore, struct request= *rq) +{ + struct blk_trace *bt; + + rcu_read_lock(); + bt =3D rcu_dereference(rq->q->blk_trace); + if (likely(!bt) || bt->version < 2) { + rcu_read_unlock(); + return; + } + rcu_read_unlock(); + + blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_ZONE_APPEND, + blk_trace_request_get_cgid(rq)); +} + /** * blk_add_trace_bio - Add a trace for a bio oriented action * @q: queue the io is for @@ -1202,6 +1218,9 @@ static void blk_register_tracepoints(void) WARN_ON(ret); ret =3D register_trace_block_getrq(blk_add_trace_getrq, NULL); WARN_ON(ret); + ret =3D register_trace_blk_zone_append_update_request_bio( + blk_add_trace_zone_update_request, NULL); + WARN_ON(ret); ret =3D register_trace_block_plug(blk_add_trace_plug, NULL); WARN_ON(ret); ret =3D register_trace_block_unplug(blk_add_trace_unplug, NULL); @@ -1221,6 +1240,8 @@ static void blk_unregister_tracepoints(void) unregister_trace_block_split(blk_add_trace_split, NULL); unregister_trace_block_unplug(blk_add_trace_unplug, NULL); unregister_trace_block_plug(blk_add_trace_plug, NULL); + unregister_trace_blk_zone_append_update_request_bio( + blk_add_trace_zone_update_request, NULL); unregister_trace_block_getrq(blk_add_trace_getrq, NULL); unregister_trace_block_bio_queue(blk_add_trace_bio_queue, NULL); unregister_trace_block_bio_frontmerge(blk_add_trace_bio_frontmerge, NULL); --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 8CFBB32A3C9; Tue, 9 Sep 2025 11:07:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416044; cv=none; b=HaBMNXS+wxFh8WlqD601YpbyZS3/BROg+TY7+cTUpN953rr00Ls/PsfD/zH4WsV3AneX2BECJFhusVbrb3dx5NfIWtEiO0PRGlPwcp7qbh8xaDMR27k8UR4gTW/wY7kGD8KGSlsHfH5b8BWCG9K1aLEPkwmXwg49VTD/Lyv6CGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416044; c=relaxed/simple; bh=VvVF5lcm3YgXE3550gu3KVuhHeYhcKcNtyFckeFyJRI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cl+pVbg6Zw7RCQuI27JS5pAgYZNf6M5/9sLG/3En2RlZVd4vf0oQncmlJ5evanfUbYfEYTED96AJQfqGfV6LcXbt4HrNG5VeJ4snkZkTdAZl09KOsV37mvaCnasw0Wdks1qGlnPeXcxTm7iOXc5JbkdaX5pH9BT7UgbebN5Ogxc= 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=X6icDhX+; arc=none smtp.client-ip=216.71.154.42 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="X6icDhX+" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416042; x=1788952042; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VvVF5lcm3YgXE3550gu3KVuhHeYhcKcNtyFckeFyJRI=; b=X6icDhX+sh7BImEvAaytViFHc5Lqm5PrKZ87SP40mI4EfEkcC8HGacw9 N1WQyU20MGFd4gEwxkRRXbRPod/dDpn9WcgJe/cKd3SEB7pSbGJiPvIhJ pVokCjYC5vbyV8BjMBC9PKS/4VXTfevFpPt5C3VKeAfO2GbdcUXZ0auB/ tlnm6xW4eSJ5gwKQDQoa5fTvQDwBT9PB4kU49aJhgZOJA4XikEtZsMHjG tCi9bPvDfry4B537hgmhhhH2Ide3O1fhihsSaHg+ILceuDLMe/+JVL2xV N46apDhj/A9UzsXxL+es3Pu+cjnzjaIB3NAbWQmxMp34X18tgg8QKKUDf A==; X-CSE-ConnectionGUID: /WxBiLg3SPO7s01L1rU4tA== X-CSE-MsgGUID: T2DhYsmsT+WnC/hfuqNDXg== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810187" 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; 09 Sep 2025 19:07:22 +0800 IronPort-SDR: 68c00a6a_+lesa0GOC+i8fNG40rtT/3hGRYOAdBSu8KNWhBZbovRRzMa hkx1JEDMyIDD27bJ9f+yBEXro/7ZLcJl8Yx+rww== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:22 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07:18 -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 14/16] blktrace: trace zone management operations Date: Tue, 9 Sep 2025 13:06:09 +0200 Message-Id: <20250909110611.75559-15-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Trace zone management operations on block devices. As tracing of zoned block commands needs the upper 32bit of the widened 64bit action, only add traces to blktrace if user-space has requested version 2 of the blktrace protocol. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 2 ++ kernel/trace/blktrace.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index c75ae82b2dbc..074c4de62c3e 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -64,6 +64,7 @@ enum blktrace_act { __BLK_TA_REMAP, /* bio was remapped */ __BLK_TA_ABORT, /* request aborted */ __BLK_TA_DRV_DATA, /* driver-specific binary data */ + __BLK_TA_ZONE_MGMT, /* zone management command was issued */ __BLK_TA_CGROUP =3D 1 << 8, /* from a cgroup*/ }; =20 @@ -101,6 +102,7 @@ enum blktrace_notify { =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 =20 #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)) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index fea6e63ee27c..13424efbb2f6 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -1046,6 +1046,22 @@ static void blk_add_trace_getrq(void *ignore, struct= bio *bio) blk_add_trace_bio(bio->bi_bdev->bd_disk->queue, bio, BLK_TA_GETRQ, 0); } =20 +static void blk_add_trace_blkdev_zone_mgmt(void *ignore, struct bio *bio, + sector_t nr_sectors) +{ + struct request_queue *q =3D bio->bi_bdev->bd_disk->queue; + struct blk_trace *bt; + + rcu_read_lock(); + bt =3D rcu_dereference(q->blk_trace); + if (unlikely(!bt) || bt->version < 2) { + rcu_read_unlock(); + return; + } + rcu_read_unlock(); + blk_add_trace_bio(q, bio, BLK_TA_ZONE_MGMT, 0); +} + static void blk_add_trace_plug(void *ignore, struct request_queue *q) { struct blk_trace *bt; @@ -1221,6 +1237,9 @@ static void blk_register_tracepoints(void) ret =3D register_trace_blk_zone_append_update_request_bio( blk_add_trace_zone_update_request, NULL); WARN_ON(ret); + ret =3D register_trace_blkdev_zone_mgmt(blk_add_trace_blkdev_zone_mgmt, + NULL); + WARN_ON(ret); ret =3D register_trace_block_plug(blk_add_trace_plug, NULL); WARN_ON(ret); ret =3D register_trace_block_unplug(blk_add_trace_unplug, NULL); @@ -1240,6 +1259,7 @@ static void blk_unregister_tracepoints(void) unregister_trace_block_split(blk_add_trace_split, NULL); unregister_trace_block_unplug(blk_add_trace_unplug, NULL); unregister_trace_block_plug(blk_add_trace_plug, NULL); + unregister_trace_blkdev_zone_mgmt(blk_add_trace_blkdev_zone_mgmt, NULL); unregister_trace_blk_zone_append_update_request_bio( blk_add_trace_zone_update_request, NULL); unregister_trace_block_getrq(blk_add_trace_getrq, NULL); --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 D50C032BF24; Tue, 9 Sep 2025 11:07:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416048; cv=none; b=NA4GJp4UYUpm7pbKbqBzp6knsVeBpyL+px0DTiunKIWYnZ5gdbqoz4A5r0APMk+ksxF+qjzs4w2ww6WRWcxl10/jeVDQrPUYOA0PwustKDXN/ESKqczYhvCQEwTxaaKMlg4sapXpSBeAdkjo3qFfo84WWLRGHbPO95RZ7b9IsPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416048; c=relaxed/simple; bh=PiP2qNGmDC0An92BDWQlk63SDSUUtB4HhoU+NEAxy7Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=t/c0N3zp2d/0BII+GYqYNbHB2hJF/AF36oW0EinKYMe1sTtKfaVH0Lw+h4qce00BRbBsjx8Grjae8+4wg8+Hf/vX0wGBc7gJpcV78wwCJ3vZ36YNC8pex36gj1vEBbADDtZeL6iKlogY5Pqa1/op9CKcmGiagfei283Gcfm5ngY= 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=hsHTt14l; arc=none smtp.client-ip=216.71.154.42 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="hsHTt14l" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416047; x=1788952047; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PiP2qNGmDC0An92BDWQlk63SDSUUtB4HhoU+NEAxy7Q=; b=hsHTt14l9Tpkba8oMXPaI9ZlFIoO0N8HaMQMiM8yR8J8747vASVtPtcD DXsh4nn9xkb+R3CLNV70OXaGEM0ws1R4zTIe5pD0oci27u/tnIlhDdOS4 smFQE8gizXx2+2jy1i+CBKcAx2Qd07FpbF10LEnITilLuUyXWJUiAHKmH roivy/DYwLMNksFyljcTDlRdDPUynGvH1rnQLAtjR8OOShIKgBzn3A2hC /6L0HNOB02QybNesiukH/ibyMQdMktCu5msnia4mu4qn3tb5RshodoMto L2vBg89HhlhOz/lbXmMZN5BZwOr6gPGCSa9MQAnB7PPR7i0G5XOT+Mx+L g==; X-CSE-ConnectionGUID: o9aJCBaCTyeAiGjYFGHaWQ== X-CSE-MsgGUID: vVPmp+byQXmv6sPWfYeRYw== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810276" 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; 09 Sep 2025 19:07:26 +0800 IronPort-SDR: 68c00a6e_E/KZZWebPU//1ZAZerRwqKYBvHvg3TTAblKjxoWiSBEqJ0t a9h8cT7BU4Axl2Yty5Vk1E3uMpyUx+u1Tt/lWRg== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:27 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07:22 -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 15/16] blktrace: trace zone write plugging operations Date: Tue, 9 Sep 2025 13:06:10 +0200 Message-Id: <20250909110611.75559-16-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Trace zone write plugging operations on block devices. As tracing of zoned block commands needs the upper 32bit of the widened 64bit action, only add traces to blktrace if user-space has requested version 2 of the blktrace protocol. Signed-off-by: Johannes Thumshirn --- include/uapi/linux/blktrace_api.h | 5 ++++ kernel/trace/blktrace.c | 39 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index 074c4de62c3e..dc1aa8e4d787 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -64,6 +64,8 @@ enum blktrace_act { __BLK_TA_REMAP, /* bio was remapped */ __BLK_TA_ABORT, /* request aborted */ __BLK_TA_DRV_DATA, /* driver-specific binary 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, /* from a cgroup*/ }; @@ -103,6 +105,9 @@ enum blktrace_notify { #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_QUEUE)) +#define BLK_TA_ZONE_UNPLUG (__BLK_TA_ZONE_UNPLUG |\ + BLK_TC_ACT(BLK_TC_QUEUE)) =20 #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)) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 13424efbb2f6..3e7cd8f46c0c 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -1094,6 +1094,37 @@ static void blk_add_trace_unplug(void *ignore, struc= t request_queue *q, rcu_read_unlock(); } =20 +static void blk_add_trace_zone_plug(void *ignore, struct request_queue *q, + unsigned int zno, sector_t sector, + unsigned int sectors) +{ + struct blk_trace *bt; + + rcu_read_lock(); + bt =3D rcu_dereference(q->blk_trace); + if (bt && bt->version >=3D 2) + __blk_add_trace(bt, sector, sectors << SECTOR_SHIFT, 0, + BLK_TA_ZONE_PLUG, 0, 0, NULL, 0); + rcu_read_unlock(); + + return; +} + +static void blk_add_trace_zone_unplug(void *ignore, struct request_queue *= q, + unsigned int zno, sector_t sector, + unsigned int sectors) +{ + struct blk_trace *bt; + + rcu_read_lock(); + bt =3D rcu_dereference(q->blk_trace); + if (bt && bt->version >=3D 2) + __blk_add_trace(bt, sector, sectors << SECTOR_SHIFT, 0, + BLK_TA_ZONE_UNPLUG, 0, 0, NULL, 0); + rcu_read_unlock(); + return; +} + static void blk_add_trace_split(void *ignore, struct bio *bio, unsigned in= t pdu) { struct request_queue *q =3D bio->bi_bdev->bd_disk->queue; @@ -1240,6 +1271,12 @@ static void blk_register_tracepoints(void) ret =3D register_trace_blkdev_zone_mgmt(blk_add_trace_blkdev_zone_mgmt, NULL); WARN_ON(ret); + ret =3D register_trace_disk_zone_wplug_add_bio(blk_add_trace_zone_plug, + NULL); + WARN_ON(ret); + ret =3D register_trace_blk_zone_wplug_bio(blk_add_trace_zone_unplug, + NULL); + WARN_ON(ret); ret =3D register_trace_block_plug(blk_add_trace_plug, NULL); WARN_ON(ret); ret =3D register_trace_block_unplug(blk_add_trace_unplug, NULL); @@ -1259,6 +1296,8 @@ static void blk_unregister_tracepoints(void) unregister_trace_block_split(blk_add_trace_split, NULL); unregister_trace_block_unplug(blk_add_trace_unplug, NULL); unregister_trace_block_plug(blk_add_trace_plug, NULL); + unregister_trace_blk_zone_wplug_bio(blk_add_trace_zone_unplug, NULL); + unregister_trace_disk_zone_wplug_add_bio(blk_add_trace_zone_plug, NULL); unregister_trace_blkdev_zone_mgmt(blk_add_trace_blkdev_zone_mgmt, NULL); unregister_trace_blk_zone_append_update_request_bio( blk_add_trace_zone_update_request, NULL); --=20 2.51.0 From nobody Thu Oct 2 23:53:21 2025 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) (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 B689B32A3FF; Tue, 9 Sep 2025 11:07:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.154.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416053; cv=none; b=RV4UHYvluizxPAiVyFPeBqp7HBLp5I9D+mLIB02AWSuzmhUF4LyDjIeN+QxcS7hNlQKJa9eK+cLo0QwfRz6obNACJ3BGzR1l2j50qeZ6KMPYiqsLyYRvV4yuraWINcIA+StrJ4pN50oGINsHyTCkYUd8SSz+PjYBGevc9/HFlro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757416053; c=relaxed/simple; bh=L1r/8uxRlM/kp1r+xQYQKLRaeaIZcG+wTHH1zLo1dPg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=baGgpJMNEAFiSn6/rT2VC48uchz2Lr1la9sV4OzbhDHtnSAHqAOdAe2VfpCdNZyrrXG7cJRrdtWWjB2iDS6Mk6ZVHtMpAV4Q11On7wYzkP+syw7glDcKom0KNnB2ehhe9Ibd2P29pV7xWYm7JUe3hPcfA4MkaLI4gjPuEyZuBMk= 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=BSSKVvD3; arc=none smtp.client-ip=216.71.154.42 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="BSSKVvD3" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1757416052; x=1788952052; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L1r/8uxRlM/kp1r+xQYQKLRaeaIZcG+wTHH1zLo1dPg=; b=BSSKVvD3bgWUaZJXlhBfnRdDvXPYdFXqPCjcOSW1fu0g+63+rS/klvSJ 2IZzLX/sdqzzPyR16O3MdZc+foqjyv0XHeVfaMX/SBTsNt8x2hBveCOje TgCk3cllr2+B/QymgPfO5wsQ6lvhRu+cdx5hE9GBpb4vCJg1RcANVe4P4 OJpeMPaWwrU/z5lEofpsD82VAadJwMvSGoSuS6P1z0KCQuOVyde+7H494 vBMTHy+BIRYfi20mFw/utqH2RADtxtxoiHcfAI/E4M2vax5Std/ADVSOQ 7YanslDibrs/ITWw2BRXYTOsrxBirKA5clzvTkPf+sEbHeJmPWN58WnzF w==; X-CSE-ConnectionGUID: x3xD8wRbTliz9SXpduLUCg== X-CSE-MsgGUID: QeMNkhffSuOi+4QBud7Qnw== X-IronPort-AV: E=Sophos;i="6.18,251,1751212800"; d="scan'208";a="112810311" 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; 09 Sep 2025 19:07:31 +0800 IronPort-SDR: 68c00a73_h+NRTEx8IiwGfKL24sEiNYZUcelO5W7AB4BIzq42ezMBB0o q6KgDFSlRgG6TD570bsRJABHD/JDn/3381Gk5SQ== Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 09 Sep 2025 04:07:31 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip01.wdc.com with ESMTP; 09 Sep 2025 04:07:27 -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 16/16] blktrace: handle BLKTRACESETUP2 ioctl Date: Tue, 9 Sep 2025 13:06:11 +0200 Message-Id: <20250909110611.75559-17-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250909110611.75559-1-johannes.thumshirn@wdc.com> References: <20250909110611.75559-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" Handle the BLKTRACESETUP2 ioctl, requesting an extended version of the blktrace protocol from user-space. Signed-off-by: Johannes Thumshirn --- block/ioctl.c | 1 + kernel/trace/blktrace.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/block/ioctl.c b/block/ioctl.c index f7b0006ca45d..e7f83a58c8ae 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -691,6 +691,7 @@ long blkdev_ioctl(struct file *file, unsigned cmd, unsi= gned long arg) =20 /* Incompatible alignment on i386 */ case BLKTRACESETUP: + case BLKTRACESETUP2: return blk_trace_ioctl(bdev, cmd, argp); default: break; diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 3e7cd8f46c0c..e16a3dbed527 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -742,6 +742,38 @@ int blk_trace_setup(struct request_queue *q, char *nam= e, dev_t dev, } EXPORT_SYMBOL_GPL(blk_trace_setup); =20 +static int blk_trace_setup2(struct request_queue *q, char *name, dev_t dev, + struct block_device *bdev, char __user *arg) +{ + struct blk_user_trace_setup2 buts2; + struct blk_trace *bt; + int ret; + + ret =3D copy_from_user(&buts2, arg, sizeof(buts2)); + if (ret) + return -EFAULT; + + if (!buts2.buf_size || !buts2.buf_nr) + return -EINVAL; + + mutex_lock(&q->debugfs_mutex); + bt =3D blk_trace_setup_prepare(q, name, dev, buts2.buf_size, buts2.buf_nr, + bdev); + if (IS_ERR(bt)) { + mutex_unlock(&q->debugfs_mutex); + return PTR_ERR(bt); + } + bt->version =3D 2; + blk_trace_setup_finalize(q, name, bt, &buts2); + mutex_unlock(&q->debugfs_mutex); + + if (copy_to_user(arg, &buts2, sizeof(buts2))) { + blk_trace_remove(q); + return -EFAULT; + } + return 0; +} + #if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64) static int compat_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, struct block_device *bdev, @@ -833,6 +865,10 @@ int blk_trace_ioctl(struct block_device *bdev, unsigne= d cmd, char __user *arg) char b[BDEVNAME_SIZE]; =20 switch (cmd) { + case BLKTRACESETUP2: + snprintf(b, sizeof(b), "%pg", bdev); + ret =3D blk_trace_setup2(q, b, bdev->bd_dev, bdev, arg); + break; case BLKTRACESETUP: snprintf(b, sizeof(b), "%pg", bdev); ret =3D blk_trace_setup(q, b, bdev->bd_dev, bdev, arg); --=20 2.51.0