From nobody Thu Oct 2 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A73032E1F01; Thu, 25 Sep 2025 15:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812567; cv=none; b=IZb9hzYnpX9O+60KS6hFKSifwBYxX3/nHItukKS3JeGihoJHHsb5iKnl9zqcd+eEm2p7p1EAlZyRub4XmclXfZvXGPywLKjVAHedYCgKrlX84iIVf6U+KQRyGQhDT2g2pjVK/ScgNjF+vXTsLPeekWuDgX1KMNWqub9qo6bS5eo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812567; c=relaxed/simple; bh=3D/XrnT2iXRWVL8VTgMUInLNkbN2LWEivup0mFwVh7U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jcEt4SDBiruYpvtYYizQJJnqJMNGLdhsQQLhPaAV16kD9hxoxiEX0dBIdSsdtTKkUWrdhp3Mx/AW1vDJfZ/8UvGu9NO2dULO9xtrXNnd0sUKFf1J2sd0lW1JXi0I01JUyxfN1/Uq+XL00ou+oG8D+Lgwhnvfbbjqg2To2M+7ijs= 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=b76itkYb; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="b76itkYb" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812565; x=1790348565; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3D/XrnT2iXRWVL8VTgMUInLNkbN2LWEivup0mFwVh7U=; b=b76itkYbYzn5lRIk1uTK+K6r0ngw14I9QvW+88xJoyo4eUd+XuaHat2Q pByt6/9T/PzEgkjyBi9NH0fGEeVSoWNCAb1iRRy2avOY5+Pbk25A8VVVx FhVBn1ZC+P6L16gocdiRC5geHmSqMTKv5VO7BC97J15tFsdrFEFXbt7/5 YEGJbFZb9Y9XPqSffxVAD/S1GWrfdvTgZDnaLlZ/YwjAVG2wo5camomON Zp0OLEoajnsdvC3jhZLyEJG/WbFrb0gDDL47GPXR9XY9LGNKZtSfNeuag fSlYInj/Mh2xbo4IVykHBiP6mfbg4J91aEvZVAhN42Qu2+x2MuSGexVHo g==; X-CSE-ConnectionGUID: fdPhAOKAQmOxxgTVWxRawA== X-CSE-MsgGUID: HcmKXiB1QNmTeQ/7BWJ36A== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347522" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:02:42 +0800 IronPort-SDR: 68d55992_797UnHQnuWqMO6w3NvrGc3IDGN3D6WYvgOZjE9XU6T0O8Ws W9Emtj/V2HybUgoBlPrPesKzgGR4qEkUOeJRu5A== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:02:42 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02: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 v2 01/15] blktrace: only calculate trace length once Date: Thu, 25 Sep 2025 17:02:17 +0200 Message-ID: <20250925150231.67342-2-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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(). Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- 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 6941145b5058..bc4b885f2cec 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -76,13 +76,14 @@ static void trace_note(struct blk_trace *bt, pid_t pid,= 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); @@ -92,7 +93,7 @@ static void trace_note(struct blk_trace *bt, pid_t pid, i= nt 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()); @@ -228,6 +229,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; @@ -250,14 +252,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); @@ -273,7 +275,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98E802E2DDE; Thu, 25 Sep 2025 15:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812569; cv=none; b=RX4d+3rXFnyToz1a2oehuPEUf4/2tRj1+tpalNNQIkrUlFHx3cSPzJA6oJaDLkZAhicXlEY7I2tO4YS/O1CL+hL+fWNEErSCDb6JBEkTPh8D+EvnHWZWbR3VXZgsjXj0muVDWWXEa+E5xsEvmLMa8iJnVBXrR9ZXsegalk677R4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812569; c=relaxed/simple; bh=HaS6ytGAQxinLK781e8ldhD37Fi9fCITvN6+0+H1/ZE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XMJeVDg0QJHRKDoDIZzCj+MjTJVMDghWOBwKMxUVAMTN5vy23Mx6Bt4E5sjqD3TmJqUQtgKDVW2Nvi/5bJHMazt8olRWhoBWC/tWxCo/p0ex8xzl79EHetFNpP/jvz+Gv5/3bUYxt0KVAr9MITePW6/WgpTBjrs6t0Vql2CNAN4= 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=CkTd3/bC; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="CkTd3/bC" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812567; x=1790348567; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HaS6ytGAQxinLK781e8ldhD37Fi9fCITvN6+0+H1/ZE=; b=CkTd3/bCl2lO0kl1QVcbr7A9sz8YuQEdj+dK+zTXdyKI7+PjKas+ldV0 NvluXIIENzLclsF95MtkezXyHUnh3OpuQQLhrOHTXu6WM18NVWRMrAh3m HORJJeOJcWHG5uQ5dCi+6ayNhiTda/I9oMmX3RmLTui9mRumE2mxCPXoU 7V/Umh6CgLpI1s4XSHIwKqB6XAVQ4LxS09f7tv4ikJs9jTnU2DM1oPVKs C7eUtssXumyLgp6afl27xUQ5TX+gIAdaXw6/r0tkbewfcoiPM5jV6oUq0 xZXos1wNJO/+nCEcLlASbLKmeUsm3E14UIRftQjVWKwrluBvHJLf/zjm7 Q==; X-CSE-ConnectionGUID: d0SBv5JcTNmiiiXjCjiAkQ== X-CSE-MsgGUID: nBc+0YAwT7ayYmArAdeyig== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347601" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:02:46 +0800 IronPort-SDR: 68d55996_LvqUbxTqsypp4pqPRJdN9mB2LnMI1Vx1jdTYbhJrjft2xHI z/mFf/8GKrbtVJ2oQG1VM2bU1dVGcfpAtF0AJcg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:02:46 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02: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 v2 02/15] blktrace: factor out recording a blktrace event Date: Thu, 25 Sep 2025 17:02:18 +0200 Message-ID: <20250925150231.67342-3-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- 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 bc4b885f2cec..25a0a1b09747 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. */ @@ -87,7 +115,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) @@ -97,18 +130,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 @@ -263,7 +289,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)) @@ -282,32 +313,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4E262E3B18; Thu, 25 Sep 2025 15:02:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812572; cv=none; b=s1PADqtg6RSFzA2Q0tbfJ0re1seLsOhU8ItV3TAmJOo2Y1dozuQ055i8E84Hy3nY/3Jz83z8Y4xhRxbJmlpxf1JqmEHdJ/BYt7qohpI6sedBSvAlO22t5kofiUffqz6v2X14lIo4F4MJ5Ub0vHI214sD98C2qk2LNyfD2vun78g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812572; c=relaxed/simple; bh=DjULptPUWtUZ4rclbeccoEdPAkhPnzCJtKtItKf/JTE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E/NeSZ1kfqYqNHYritIsCEaP3JoknbUkbQFOUJRQydOsRV3zBv/XCZJhjx4aaQ4p/rxO/b4jg1AzpZfnxDvsEc6+qtXHSwpOIfl4FLJuk6sL/p7EabDPhotUju4sFnqM5xPUushRgkdUl5G1f2iGvZE0jVHJ1kyZxnh1XGI+P8o= 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=IWG7zKfu; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="IWG7zKfu" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812570; x=1790348570; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DjULptPUWtUZ4rclbeccoEdPAkhPnzCJtKtItKf/JTE=; b=IWG7zKfuCfxwtizvSuHjdXGKLCyiwePnOLMum+iemHLUso7r94KZckrN rmyowR6sqI+IMrUCb0WLTm8ZZpTHYpQo910YT+/X0+CkoQPEaDFs0bnvM Qo4tMVE8FXj+QEPnU/XsHmh7rrxGHDwc86WQ0fcn0abxptA3albmuHvh9 ii4+c0Z7CE2DSEHW6Lhym4L5yWKQhbTYetmDAlrIIlMlMACfM0KCaAuap dDanhhsk6CSnt1LLd7dFTJaVeLvvn6WZRkJgD+GLSrg3GASfzSV2AL1+e MPuUZaeC/HNQoujxPvFKx2IbLcHcR4ylN3NiecoK9BPZiTsNppGgqJW7z w==; X-CSE-ConnectionGUID: riW+ZCp3TAeB+nhHroW29A== X-CSE-MsgGUID: KbJ6vxr7SEG31FacNRTDjQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347623" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:02:50 +0800 IronPort-SDR: 68d5599a_xpDocLYnaTgiF0H5YJLb5cNSBpevw9uhiehdKOqia+E9ibe W9Gzi3IRal/fpwWnbbIJPBXVbx/YWQ//Qp6ADEw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:02:50 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02: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 v2 03/15] blktrace: split out relaying a blktrace event Date: Thu, 25 Sep 2025 17:02:19 +0200 Message-ID: <20250925150231.67342-4-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- kernel/trace/blktrace.c | 60 ++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 25a0a1b09747..51745832c713 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 /* @@ -246,7 +259,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; @@ -278,20 +290,21 @@ 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, what, bt->dev, - error, cgid, cgid_len, pdu_data, pdu_len); + record_blktrace_event(ring_buffer_event_data(event), + pid, cpu, sector, bytes, what, bt->dev, + error, cgid, cgid_len, pdu_data, + pdu_len); =20 trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); return; @@ -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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C8582E5B08; Thu, 25 Sep 2025 15:02:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812576; cv=none; b=pr2uzm49KGzRdAFuthfG3Zkneg8Ve/xiXWlDJAfYm5vZ9h2Q+8X3gWVOKjmeVZO6CVIN9SEbPrvN/sFlyMGs7Tvo7v1XIuFZWnvqxIZzuS4/Mf4iYZPjU43AUeh+7RseMIAOuFxcpQ4ick5rcadSUustXeal+rKXaUp/1qT5+y8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812576; c=relaxed/simple; bh=hdrv1AmFvqjTD8G//IqirsAhjDI+6iVgBVskbkdogLE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z5TaLDNZp9f2aWZucWEf9wz+Lk9dKl/EOMtgxtMKPys6KY1k8YAf2xvvKNcFhLzQ0oYaVn9OBykoA8YVUmpc8f9w1WlCdyxaZxi/YO8NpueTO1GHaIk+mEkKTTN9+EnPzhs+M5WzL2KioXPDgkJ1mFWjP2xXPpDbz9N5/Ec21tc= 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=POnwGlkz; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="POnwGlkz" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812574; x=1790348574; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hdrv1AmFvqjTD8G//IqirsAhjDI+6iVgBVskbkdogLE=; b=POnwGlkzDxFO9Ta+/mKr7kLmwR0BJwmmYNT1al0rl8xc168jzgYBy1DY YHajYogcBJ90oJGJbENwzbnjWEgXalETuAvO6lAC44Z8P1dPQ4Vpp2lwb 5sXWJ7Z6WujbpZmzP6O7VYqNdRA1mKwitnLYVb7aCSHqsAzwL8mj8GNtS 1/QRO5TyVV+bNvA6J6NJ/IEbzG4ARywdMYhCtsvqJxZMCP1w2zfsm7i+3 dbA0Jq5fgIiXA4xpF0ZG2t9PYH014ho06L/LUZIWbW1MZpcFPpYDUWmyW IVNbTDbjEe4orpPBK2pPhmtzBBzRnE3i1/UsCCWociKrONjZe4Ib8LYoA A==; X-CSE-ConnectionGUID: AgFuHQODTJmPHnAmHHCSQw== X-CSE-MsgGUID: YobEOcMbQaqk/vYOJmH2bQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347638" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:02:54 +0800 IronPort-SDR: 68d5599e_rljV9ofVt6wOlgMDiIhalKv6L1AoLuyEZj7rXU3iwymyjbB PMk4yHu4F5z7RzZnJpAVZsoASMiwNDlmvuBSvtA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:02:54 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02:51 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH v2 04/15] blktrace: untangle if/else sequence in __blk_add_trace Date: Thu, 25 Sep 2025 17:02:20 +0200 Message-ID: <20250925150231.67342-5-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- 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 51745832c713..11e264f67851 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -278,10 +278,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8BB22F5330; Thu, 25 Sep 2025 15:02:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812580; cv=none; b=gLPlemt76izXmVhTH0ei+pz09+LnL2bIIWGZsjyWFfvdPUxQaVrprUx2CsZXB05QlR8oCZTM2n41JedkcL4nNYnR9qIM/x64plGwW3HhhZMmx11vuxigWxJ15lLk2mFqrNnr8VfGsUcthqIFVF10H0rZTxn+8FuDucTVGo4k+Z8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812580; c=relaxed/simple; bh=7+ylNvniXJ824dXkKqdVRoNNkoGIWyG9y9Xz28bxgWk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rB2Cn7klENxUXF3fn7gl4zcwo7jRTw08B9LPW794Jchmm7FuGQ2XS1eCDsgxh0YQW+B4QApZeUCJRNjRdX+l0WbZPgbwxfLhYn/bytk7x69b5AFA8WgeApzi1DyEXjveKpNL6c6XzkwRUdNqI1d0d5UfP6XIZFfxSORhviEiiZ0= 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=hDJ01wc1; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="hDJ01wc1" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812578; x=1790348578; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7+ylNvniXJ824dXkKqdVRoNNkoGIWyG9y9Xz28bxgWk=; b=hDJ01wc1++9z81NXDl4ChQxg2cyk/67QgHL4L9PtciRwVnL5dVrXUJc6 FQN8zY935y9v0d2zeXwnXXDnMxbdnuKCLpJooWK4LMpzt/HK6or9dJuET DR7JNf0mhJLCIJsCRdyv7Zb/ktZw+cWcs15k+SVa9csxKRvzKQtYzesV1 4CM2M1G6AjbRUxc4BKXQ4UMGvI3Zng0Qqlw4mHHbuiOLpKioLLb8Tx4Dk 7C0EIKnagtXkocYnQhOhrrfv0IePYtLNngYwmaTGSWtB1lY7Zn7TUT0Lt JP0iJg2kbVpqMN8nily4BSA8pzn6tfP1MnzBYgm7YrmZ3xVcTcfUsgBxD g==; X-CSE-ConnectionGUID: rYL8tohBQOe5QuVF7LafyA== X-CSE-MsgGUID: AWZTbfCERuqC9RcOVKv1bw== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347719" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:02:58 +0800 IronPort-SDR: 68d559a2_0OC+D6qZiAB9Wf5NilK5CmZsOzHNTFjiIqzlCutyWo87Zlj GBKrNuPoOPO6T7W7KUFS9gtoF8sx8xVxzAhSrsg== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:02:58 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02:55 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH v2 05/15] blktrace: change the internal action to 64bit Date: Thu, 25 Sep 2025 17:02:21 +0200 Message-ID: <20250925150231.67342-6-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- kernel/trace/blktrace.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 11e264f67851..51c001e4981c 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; @@ -311,9 +310,9 @@ static void __blk_add_trace(struct blk_trace *bt, secto= r_t sector, int bytes, return; =20 record_blktrace_event(ring_buffer_event_data(event), - pid, cpu, sector, bytes, what, bt->dev, - error, cgid, cgid_len, pdu_data, - pdu_len); + 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; @@ -330,8 +329,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 @@ -818,7 +818,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 @@ -882,7 +882,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 @@ -948,7 +948,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1F322E2EF1; Thu, 25 Sep 2025 15:03:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812584; cv=none; b=oYHv6L1P0yQxWdpqFt6eFBmpcjx1VznPqo/9wKMq8smikVv7Yn0h0WI3oHdjkgYnXrM+5qnRzy6c9p44IZCgL+pX/nrCUrfcnDfoCcke9G3hlqrZJvFHkDR5lDfstJ9yGWdURIEHN8M2GkYdIJnnnI1z4lareeA8ePmc507A7dQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812584; c=relaxed/simple; bh=dSPTV7shWs8QOyqDcRIgVOAEn91OVl4zHbuoP17n3qQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pBTxDhc64GzLVwaNHHoElXMGQ+1iLbKNG2/8AbSAEWxNl9BSJAABbe4mr66bCop0U8NM2ENxx3+OOjy3gMfi/WXXmhPR3Npq5waoFy8tJHMEo6TnS5KaYbUFQcAQghwbxiQGlicE6dgo3GCYrAia8w071m06FfvY2oq2h13ZcwE= 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=mKU/klP0; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="mKU/klP0" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812582; x=1790348582; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dSPTV7shWs8QOyqDcRIgVOAEn91OVl4zHbuoP17n3qQ=; b=mKU/klP06Uew2tgRkmBRDAXS3kFs2rPGqiA0ak93VgnT9M3BgovwdbJk +1zAbRADfs8VkHGRuxwp/2fYLDLRzbJseF4LrVj4dcMDryQiHfvxhfrRP 9+YwG25oGaJGSP7dTVzPZmP0YVJ5loEQgf6UmrmScy6B8TQBVKdud2hYR 8P9r5UWtHwebK+YuYMkPHSdBcBBVXjlp1l1ckyB4HKb9umgqVkW4eOJ3Y vnmUzxO89bvB9QslqomZleZyZCUaznDbNCy/b1LtNi+J9j2vFFj3rdQSS MEyYkVeoD/cgiQtBXQQw2WD0fgezdSQSmimp6J7GhL/54Iv88tJS8zGxu Q==; X-CSE-ConnectionGUID: T3ZvBEkBQVWTi9kh3OrHJg== X-CSE-MsgGUID: dLbDBkatSGmehTBkO4IPGQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347848" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:02 +0800 IronPort-SDR: 68d559a6_Gf46M0zg3cml6UE16hW4GjXUfa1baQqRlCOKvtCUj8mGrR/ hvX9IMd7H1Xpm7TObmp07kThdaFIE/vU1FR/2OA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:02 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:02:59 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH v2 06/15] blktrace: split do_blk_trace_setup into two functions Date: Thu, 25 Sep 2025 17:02:22 +0200 Message-ID: <20250925150231.67342-7-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Also move the size verification logic to the callers. Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- 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 51c001e4981c..f6a41e9510f6 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -518,9 +518,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; @@ -528,31 +529,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); @@ -572,7 +561,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 @@ -580,8 +569,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; } @@ -593,17 +581,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; @@ -615,12 +625,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, @@ -628,17 +632,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); @@ -655,11 +667,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, @@ -670,10 +685,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8F142E2F1F; Thu, 25 Sep 2025 15:03:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812588; cv=none; b=OeBJvej+ZYvR1lFN6y0fROrGTvlNyNOpdR4WefmWNOH4k7UCIIprNIdHOzMDNSdl6n4WDS7m4wEEwMLMMPsf72D7QKX7K5+JEjJ+ErbAANkTC7pT2xlLGEwvGrSeX09/fbShnTbvjF1aT6Od+Oe6c1NzoYSB6Xspxp0UWCjVkXg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812588; c=relaxed/simple; bh=Q06ElkC1YeIS96B+gJruwG4okAMRndVsd4fhyoRMYtQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P6tl0PS19ehPh6zg14PwMRBPyrJQ6g673oJ+YFMzOnk8CgFflGDfVxCcz8gHxQOYsubAfm6hG+YHBX12tEvuVxgIMIU/MTG48o7yzlHL2n+6+dHfKsmWyQ9DSKfrmCRuHLGBasNDTucW/jeOlnfF3t2bZFJWqanypP1EPzKUsWQ= 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=nCImdaYo; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="nCImdaYo" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812586; x=1790348586; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Q06ElkC1YeIS96B+gJruwG4okAMRndVsd4fhyoRMYtQ=; b=nCImdaYoMjPVwHwsPncd/QgmxR2yXrGTYLZnm6ArpaQs63JKicosxqEO ha03hHSFxoHFDM+FMrb1yFPJXVep7OLkISmRSNXCs2iy5NUkUOTiFgLDl /7SPOJ0uYeOdY0zAkgg0LkBGncdk1TQP7LrS1mvEfX1y/KalgzHdNiDQY 5X3usUDme/Qq7pooAilO469whI50zvzScgharKMJDrixN3Ykvq/UhyTHc +neO+1Ra25dX8FgMZGTLnMmL7+Dy+ayShlFJkHGpSdn57J3omXsL2Ygq3 dyGTBoGPYSjcdONl2SQ7q5No0g88nXwYpjNzGgwu2zfS5aqWpYxlQSTL4 w==; X-CSE-ConnectionGUID: XcRLgXtXSk6JGNHx7C1GHw== X-CSE-MsgGUID: 6vjtBnesTJOsuMi1M6yD3g== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347914" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:06 +0800 IronPort-SDR: 68d559aa_at7aBV5Gs3NYa+Z20PBAqQYeTzcdHg5kIXBZ3mQ0mdbGO5c EoGmM8KtRYml332OFr4vXz+4t42tnTbWpumAcSQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:06 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:03 -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 v2 07/15] blktrace: add definitions for blk_user_trace_setup2 Date: Thu, 25 Sep 2025 17:02:23 +0200 Message-ID: <20250925150231.67342-8-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 Reviewed-by: Damien Le Moal --- include/uapi/linux/blktrace_api.h | 15 +++++++++++++++ include/uapi/linux/fs.h | 1 + 2 files changed, 16 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index 1bfb635e309b..a3b1f35ac026 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -143,4 +143,19 @@ 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 flags; /* currently unused */ + __u64 reserved[7]; +}; + #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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A76662E36F2; Thu, 25 Sep 2025 15:03:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812592; cv=none; b=CrTHr3540VUnlNfoZxTmW8JB02l1eTQB0awO9fnSIjrgDLs2dhlQ8JqxUXC4GHUmjHzli50K5xENjm1RP1qdj6cIjzT3E3ot10e485UwU9Y1voiThTN/B1jhFK4r3KxYs9UoWyD1E6wcJn6j/mdAzfXvAJhgoK6nskwsDcDANog= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812592; c=relaxed/simple; bh=1zGL8PegQsm+QTeH4lESXnPHYliYIj5Ef+giPrlEZME=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ugRUtQiq4McariqN3EdAJtIE8o8eJJazzN8+nfI7QdSRi93+rKwKcRPCzCKFM4qN1Z4yoERbcKUeDuhBZzgWViEJm7ok8P3amI00BXT3vwiRTo1+y9jBpC0oYw/LkCDwZ4RGX4xVPlgLJAn7GCyKN4qvSZxdSdm2uGlxqWkCoaE= 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=WM4dUL2g; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="WM4dUL2g" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812590; x=1790348590; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1zGL8PegQsm+QTeH4lESXnPHYliYIj5Ef+giPrlEZME=; b=WM4dUL2gfFINeZL6sKIWcc3baE4XshV5MUcqQHqY2YdRrs8gEWbFGTxW 8Ric4FKesqWttK7EHads8wVUUfwx4WeSFXNiJOhmdEFhVonZFeDTX9zzL xKypypnZMDnnWA8AHYFhq1CzKEbhj6jhQsyFgZGnUf2wE/+oCcJVSHnRM qJjoK12wssUcnWdizkCIavBARq3ADBGuebpTeI4HeuIbvZg4h/FRRf078 Xoc19Q2VNqALRFvyAQC1pbH1eOWftBHJeYIMciip3lFNFPeV0Wejt7b43 6Q0FIci6utm7gChGf3yxJ13QSu5Gw5HlfTcYDrIQM/1G67qfYkGvY8SvS A==; X-CSE-ConnectionGUID: e19VdQloTBiJXs78mGWogQ== X-CSE-MsgGUID: /DUNn603TEaNq8zbRFUeag== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347975" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:10 +0800 IronPort-SDR: 68d559ae_kolp9y0AQMUOMAC9HFscZ3hq7oxShTg88AEXoxDiH6LJ0sy 3jCEVBF0+toLpzfOraJiFAFkJna9+HdWeElPrCA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:10 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:07 -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 v2 08/15] blktrace: pass blk_user_trace2 to setup functions Date: Thu, 25 Sep 2025 17:02:24 +0200 Message-ID: <20250925150231.67342-9-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn Reviewed-by: Damien Le Moal --- 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 f6a41e9510f6..9cd8eb9e7b4b 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -599,7 +599,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); @@ -631,6 +631,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; @@ -642,6 +643,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); @@ -649,7 +659,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))) { @@ -665,7 +677,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 @@ -675,7 +687,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, @@ -685,16 +697,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1AD8305940; Thu, 25 Sep 2025 15:03:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812596; cv=none; b=Ixa4Ym+tkK3k/gKBvspDXUZNVOt3TENdvvzqW2KDUIT6RsSIHfE1O3y1epdf8E9Ue03Zdx/MkgmGx8cV9EJHx1eK1+DIrlKWGI+fnyNCk33VVSMZRDonAmHd1uAO61ldAOjzN7wLjs9a4wv1VrKONlI5bESdMnenKfrPUdXgE4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812596; c=relaxed/simple; bh=laaNMJDwh0WNtr81seJEl3CGE99wCzafeov1KMldloU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F0IOVUEUqTRn1/OVFkdpvMaTRppF/IoKUz9i4IjuuejO2X53187HTlVFQZMFbtuqzY30t9hEsZr2UY+hdfOBhiRzTQA9srhRkw1zOH+k/8CnKdexEqOPtSk4jfpWC7xalwPCqUfkH65BpA6bAmqIaYF0n24yhv19MIiRrsl36ns= 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+RKDnKw; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="V+RKDnKw" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812594; x=1790348594; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=laaNMJDwh0WNtr81seJEl3CGE99wCzafeov1KMldloU=; b=V+RKDnKwp76dh9RcwWnobyu+pbCkpMkyGaKSLPOQr0oDOczDDdu4sl/B 9TKW3hzyaTAr8tkd795wXh/Gl+0Od/8XXye0+D1entMHCb3k4uwEHlSsJ ZK6Nkwjz/sXeLG4fbibyLQupNQZn9//Lcr/OnApLb3tyixi3VyDKhGLNj x86nexTExLyGf3If42TXS00Io4dw51cuoyanear/MicCyexaQU7/xWlS3 vLv2l7t/NMFBThJpyCYszx/e3+ZWx5vH0jP4109LqgZlv9FhGqIYFRZ9z zOno+JNxO6wof9v2z4uAECmrYGahBPNfEgcReByKqu34nszfaocBaF2cv Q==; X-CSE-ConnectionGUID: 6UErgIS+S/+op1hvtTsByg== X-CSE-MsgGUID: TAM76/nsRZ69uOR8ZjTJtQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130347993" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:14 +0800 IronPort-SDR: 68d559b2_rn9andwwHHdOxSn8Mj9MCm3YZER169DiH1TMyd+LtnQ9S/v xPzulfifYmb63P+ARK0eWYjDcVgsTeMCUV8G3xA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:14 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:11 -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 v2 09/15] blktrace: add definitions for struct blk_io_trace2 Date: Thu, 25 Sep 2025 17:02:25 +0200 Message-ID: <20250925150231.67342-10-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index a3b1f35ac026..d58ef484de49 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,21 @@ 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 */ + __u8 pad[8]; + /* cgroup id will be stored here if exists */ +}; /* * The remap event */ --=20 2.51.0 From nobody Thu Oct 2 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25CC42E1F01; Thu, 25 Sep 2025 15:03:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812609; cv=none; b=mYhEumXxlz7MWHFr6QmnrbEGKqmrpq/D4+i6S1OXlXprhA05L0lcYY+5E11UklxRVn/K90dJLn2bHzl1g/xjEqgeDEIezJCriZ+Y6gPgTcTjrAqeYJf5D4LOBRPfH6hIyFQgcqDlBflsy90b7zIiWvaXYZL5riPKL/4zMP0S9cM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812609; c=relaxed/simple; bh=ip0Tz9iBZjgRY3k7lF/V06DNImALVP9EBP12vem64xI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pHovbpUQUfBBhROWw6Pt4Qy9xvZXZxkvrf6CoqNFxT9pxenT/6QeBd4eNamtzsRWV4oPsRHY3HmRpPBp/zDZr+UQJwSbhw0mVJeX6PyESLtXd+EoA9B41IBSqObrpaDez422YuMuYZaF0Ys66ovGXbQKzIHySg0XBpoF3fJf4b4= 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=qA1v5hEg; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="qA1v5hEg" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812607; x=1790348607; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ip0Tz9iBZjgRY3k7lF/V06DNImALVP9EBP12vem64xI=; b=qA1v5hEgt6n3DzUDbJS2fpKeu88L5niSVD4QkUyjLZ0LUfKskHJscpal AlUcXIsPnNUbbTiUW/Z7lnKV1vfoEsLQrgoPCCmP0HsQtigIZNxPSqzmF Tq7V3KyEptegYttBHk1I3MkITaybD6RtoOYqTMxtecnLNPD3tiu9/STdK kHSeL/STPRTqksxkrHrTuYcdiZqHhnmPvHRcqq5VIkQXWDHKJP+NdaUGR ZcZuPaaSKu2ilH0EckLWzWFMwbtoCWttywt1kx0syvJrqqp9euMHEhTsH 2VzTMdti+LEMq04+7hDWf8ikvp3GsKYLH4y3O3OdtMJRR7T0tEQxQWcrI w==; X-CSE-ConnectionGUID: yjdyjgzHQ4mLxbW/zRkc8Q== X-CSE-MsgGUID: yeC64/AoRomM9oYIQESNcQ== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348031" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:18 +0800 IronPort-SDR: 68d559b6_wmBkT+3+h/c0pO+9/lLCD7SVam7sNPWRA1gkjbUTGZR5xLW ltV7xTeB8Gu8GMMPeMoCHwsb6Ez+IBLIV2Fi1UQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:18 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:15 -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 v2 10/15] blktrace: differentiate between blk_io_trace versions Date: Thu, 25 Sep 2025 17:02:26 +0200 Message-ID: <20250925150231.67342-11-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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. Reviewed-by: Christoph Hellwig Signed-off-by: Johannes Thumshirn --- 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 9cd8eb9e7b4b..82ad626d6202 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 /* @@ -329,9 +376,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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E6832E3B19; Thu, 25 Sep 2025 15:03:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812610; cv=none; b=hiVoK3GCYpBa0ARgI9npmbnJ4pf89Rn9yd1Paz1rMBuzQjgoiIpGMDoVZK/vheI4dxoEg56ymJw0uQfypOz9kWPgtT7Z1ekX7HC/fQB2PQAObtweNa2ixVBc3kHqA0IQ3xdGqO2H6ylZzXHuEDJVHRnYkapsAJLgKTnVIVhp75I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812610; c=relaxed/simple; bh=d7n7oF1Kd4gbEuXmUbGSa8j7M683G8VRzDhX9N0qsMs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u/6g8GmEfFc1nxzIVog4qM6+6lHxKWiqQRbxIKPkrRv7Ay5/Q5Gyx/IW/M9j46hKhiFmpyl0+Tq7iEBfGXnpzbQ9iikPpMRdEcVquJ8U9lz261doVtjtOQUDSBbHhXZXUJ6wkRk5K1wNfwzfHvi7nNJdmPsDNWOCwEqBS1k3q1Q= 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=M4YdLzZi; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="M4YdLzZi" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812609; x=1790348609; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d7n7oF1Kd4gbEuXmUbGSa8j7M683G8VRzDhX9N0qsMs=; b=M4YdLzZiksPW+BrR4y2TmV9zB9uh84yD2UP+/yG1EC7nypkOdTb2HX0B hZIkfY3iRHn2fp585ahoyxTzDGPO98rPQk+k8OsskS7fnFs+oGtQvHdhI e/iDUmENPSDAxDe28+kxzQgdEgSZ+60T5xVSaGtR73s27b+VWWeUjz+LI 07x536OMNAhAJgqBCHYAhZuTMyWqO4xf49+h/K/ORrcntgGZxbUVGVfEp Dvo13OctsLVWYCHjn/WTDmiWUfEwCyPjr7R74i3JI/xY0UkEqso524cku wWvMfbZBce8JH1EhAZ2Ke40FLN1h+Ij6BNudPGqUnih4IcRUOkwqabQrK w==; X-CSE-ConnectionGUID: 0Pv9NeltQm26CxKMHZtWBQ== X-CSE-MsgGUID: vTbHWCEVRwarKmbbObxlrw== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348047" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:22 +0800 IronPort-SDR: 68d559ba_MY2pMEhZL9l01G9IcKkxcp4nuF2jTFIPRuEzsRxlnV7zF6V 0zn1SRZTKhULeBFUQv6v9BfVPBwhPi8w63YF1aQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:22 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:19 -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 v2 11/15] blktrace: add block trace commands for zone operations Date: Thu, 25 Sep 2025 17:02:27 +0200 Message-ID: <20250925150231.67342-12-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 | 13 ++++++++++++- kernel/trace/blktrace.c | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/blktrace_api.h b/include/uapi/linux/blktrac= e_api.h index d58ef484de49..0f336140ce4e 100644 --- a/include/uapi/linux/blktrace_api.h +++ b/include/uapi/linux/blktrace_api.h @@ -26,11 +26,22 @@ enum blktrace_cat { BLK_TC_DRV_DATA =3D 1 << 14, /* binary per-driver data */ BLK_TC_FUA =3D 1 << 15, /* fua requests */ =20 - BLK_TC_END =3D 1 << 15, /* we've run out of bits! */ + BLK_TC_END_V1 =3D 1 << 15, /* we've run out of bits! */ + + BLK_TC_ZONE_APPEND =3D 1 << 16ull, /* zone append */ + BLK_TC_ZONE_RESET =3D 1 << 17ull, /* zone reset */ + BLK_TC_ZONE_RESET_ALL =3D 1 << 18ull, /* zone reset all */ + BLK_TC_ZONE_FINISH =3D 1 << 19ull, /* zone finish */ + BLK_TC_ZONE_OPEN =3D 1 << 20ull, /* zone open */ + BLK_TC_ZONE_CLOSE =3D 1 << 21ull, /* zone close */ + + BLK_TC_END_V2 =3D 1 << 21ull, }; =20 #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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 867F12E2296; Thu, 25 Sep 2025 15:03:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812612; cv=none; b=fKQfjcDwuZ3+ToRJTvwc0874xKbWMqqorJKhiM+0hfEsV1XkRsejfj5vLGi1tz76Z8k0yHTic3RsQOc7jBoVjF50+YY3ZrBA9hSVHYanMMv99PcjRQxHwc2vPKk5zMWjGV5arqq9gA4zOUrn9mvqX/B5PyG8a9sJ632c2O/UXgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812612; c=relaxed/simple; bh=GbOajL+agLCyrU+nnA9+1zCrrzS1e4WUHJj1Cai/8KI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MABj1IwqHXFmA920LaSVy3RokHmimYjv59xI3eIr/7+YiujJW1PpYC5ORzMt292L3tlAo7ZJJTO+uw5Hhs/AsfnNKM8ao/+1SpDYKr8+A/3VR1ZS6/bLBx98VgBag/OZv1z71UUOtKDBmNF+Qv2ewymh6wp4XdAcfP1Ha8Q/o3I= 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=PriaOqfe; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="PriaOqfe" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812610; x=1790348610; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GbOajL+agLCyrU+nnA9+1zCrrzS1e4WUHJj1Cai/8KI=; b=PriaOqfeuYQN+OuYsH1za+NM2j/vkC7uerOq8mh+PReBa4rCvcB23iCR 1LnYi/7W7mqowQteY2d5qkEEVYhI/Gs6mHFO1/hR5sI4Mv9mnCTGS+/NP 6ZPXjQmoJepV0HpGA9MENwgNbNbgCjBcsJpH94PVG8a0Jn89KXH1bqGVb 1U5P9iTkgvh//R6HENAoxHSaaqFaPiFllRhYnGzqWWhQ1McArx5p8dXDo kZumiv9+QapyUhZBF6YMpEwgXMvfd3Ol7iXCWuXZfxPGD0QUScvh4CqZA ls0hUF4RplhEImstaxF+218A7z6Fy/HJ8JXL1cWN4hMOeA8Ff51ZNXVOF w==; X-CSE-ConnectionGUID: a/eYUtrwQoWZ8Jpu8/4ePA== X-CSE-MsgGUID: ApOvhp/YSHGqiYQhe0p6nA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348087" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:26 +0800 IronPort-SDR: 68d559be_BhPRA0t0fSP5RV2DZ0v+Oq641Gv4hNWUZB8jdYfG5J54UbS Fz+w426gyr1PEAHkVizy7LiTBetitEwxqIlKJ9Q== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:26 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:23 -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 v2 12/15] blktrace: expose ZONE APPEND completions to blktrace Date: Thu, 25 Sep 2025 17:02:28 +0200 Message-ID: <20250925150231.67342-13-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 Reviewed-by: Damien Le Moal --- 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 0f336140ce4e..ddc9fedf4955 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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C15D53074A0; Thu, 25 Sep 2025 15:03:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812613; cv=none; b=Os47L5+5cAuJe8bwiQDk0bPvHRzZTP0t+4Hiv1D3e8/7ikA3mnzq+25sS3P3vEje++oxENAeMzQRAMl7kfIZPx3cjC3aBy9kC97XFacm8pY0cpD9JHMkx3fZvMrjvIRQ215DNSOPbStkVMpLSv3u7HrJ8QtTYSAbdDIwvLUXgsQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812613; c=relaxed/simple; bh=oNbIceA/0INBmzt1OMqCRCb8aFJ5ICel8fLZJvN7K28=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lkuzZ9/4L9AMZGiDdP1IACdt8Ng3kRUF8t7IhhPvTjC08U0x0nntLIf/6pBllOe1aviFOhVnYkEbUI60VqVcJOC88nNEf+B+smGl3j2Jurn88RDvD12xrZfy3ZWvcEZdrLySJM1iIzdgeOfjUGoigkzfAm4dwf0Treu7Vf7idKo= 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=i4USPflG; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="i4USPflG" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812611; x=1790348611; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oNbIceA/0INBmzt1OMqCRCb8aFJ5ICel8fLZJvN7K28=; b=i4USPflGQKIkgrAALAt2ZnhZOmLoAD0Z4hnttnfa5IR7e+243ciG6L32 83314ROi6Nn00LVftU/pogDiGc4S2m3QXCYt2sB73oefvB3Z774gqzQjB Vj6vobx8ADkawXSvy3J4ZJLHys+8qbsARslQXbGFMg3pctRn3BijI98Tx OzD9XEw+6jcLwyu8/YfXt8VXMrhWvjw0G+Xy/3PtbDb/AVTbpbSQcTlnQ yckU2QYuTfKby5Yy5IMXSPy8KF+lHFCNaXUJ3v/QHnbJwAdFJpjul2e/c aOSOwJSW3JemthEONSGCZLJ4qKecOD/PBqKWS23tABC6LnXQtH0dY6YT6 w==; X-CSE-ConnectionGUID: QFd2ZgLgRGO8bzgsYVUTsQ== X-CSE-MsgGUID: 235WHV2xSW6W816iMCxgsA== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348105" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:30 +0800 IronPort-SDR: 68d559c2_eKaEX728G6B9GBzCOA0aazTa5C+f6ZEGmNYteG84+LaCxc3 DoPcog8eSyndStXG7U4cOhxZxG21ejiZ8xwOUgw== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:31 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03: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 v2 13/15] blktrace: trace zone management operations Date: Thu, 25 Sep 2025 17:02:29 +0200 Message-ID: <20250925150231.67342-14-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 Reviewed-by: Damien Le Moal --- 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 ddc9fedf4955..e4b6fbbc40ee 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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96B3C30B522; Thu, 25 Sep 2025 15:03:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812617; cv=none; b=Z47StLs0omeHcEQSG7TcWJMXtXm7x+xxGvpQeRN8Hj0O2RnhVgTbskYEvtGOc1qUkvRDWup7eBeJ7/H4SY6Fzk0RcYSuFo6SI0MABXM7HQ2fQueL2a805GcG3OKXgR3dnigbFBYdnPNla609NAPO+QmUESt2JxDFqoIxQkqqP5k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812617; c=relaxed/simple; bh=XWezvbFefLtrtDMLcQIzZ3Sc3Bi11bkmwO4j1F8fEx4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=s8W20Cbuxsiz7wXCNa7BvKtAXQ5G0lyGVUC3B2qXoysalZlwbrs9GypmQ/HLoMVacw+qWjRtbesET+HUIfQOtB/loMvV4pPBT4GTu0EU1GdbNvP+3qd8UUyVl9+jAUkSNwbNL7EHrOdWq9ksxc6b5JKc9T9jpLrFScZRhjNbOP8= 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=Fk6XPRjD; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="Fk6XPRjD" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812615; x=1790348615; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XWezvbFefLtrtDMLcQIzZ3Sc3Bi11bkmwO4j1F8fEx4=; b=Fk6XPRjD8K58aTKo2DM6/UhEjcu2F5y8hg7JyJ+3/hBRkwE+KC04k9vd vcSKJLcon+/BVE7dG2QWoHPQ5W45q6YYMH4X4eyXNJXwd2WILm6J0M/rW vgd9Z2CMrpnrT+4zY27zxonEHRxgAgO8xWrikOC7/bhhC4F+Lhx2Wea0b UTW9YbD3NqolaZ85HBgLYbU89iJP3TORFWxBpCDRQoTYUaOu1Y0hntGM3 d2HASPTGCDNo7F3HGYXBcWHOtRAbAKmXB2WR22RXF6Rp1VzIDJ+O6W0ka hCgWuw+eiZ16JkP7F141l1hRweWkmVvzHh/Wpu+4O8ET/AdeRcnZtqtkB w==; X-CSE-ConnectionGUID: eqhpWfVMT9mR0v7lGr47pg== X-CSE-MsgGUID: 2cdsB5IVR3uPOosUfAZvlw== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348131" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:34 +0800 IronPort-SDR: 68d559c6_lm2eozP+iuPOkBXLeEbb5ys1UW2u4I2NYzi8EKPnYMdOgHG qQfVk8Rqm/EKtzYY0gezoIZo9+FCXcttRtDRIkA== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:34 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:32 -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 v2 14/15] blktrace: trace zone write plugging operations Date: Thu, 25 Sep 2025 17:02:30 +0200 Message-ID: <20250925150231.67342-15-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 Reviewed-by: Damien Le Moal --- 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 e4b6fbbc40ee..ab5daa1c1161 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 00:53:55 2025 Received: from esa5.hgst.iphmx.com (esa5.hgst.iphmx.com [216.71.153.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3386230C347; Thu, 25 Sep 2025 15:03:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.71.153.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812620; cv=none; b=CDgKjPhZ3Y5zHTuwdiFtdxusAJisKplasOVUAi50xofjVdmkSDVTzaGQ2hybtZ5FW2Ayx+1gaqAiVQsfCt1goTv6dKzAI9QmnMMEs9IWuZltDINSTbGeVvpYHDHMUKViX6z/hml/NgKdqFn1oRA7cXNtxYJ0EBQrZZRqrraB9uI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758812620; c=relaxed/simple; bh=L1r/8uxRlM/kp1r+xQYQKLRaeaIZcG+wTHH1zLo1dPg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y8KG7BVaOw3E6y9KiLXY2qvUZChL2ZLQe0iJ7IjAbDfc4ZL/RRqL6aKGYmb37pWis923M5957Mn3BzRwxm7plqQiMrR/SsLDuQGnfwhnLaW961qhGRRmpCC+PKKaq4O1I8J/cAY53AWpZd185PAGS6J7POn1MG3lJPSg9PeiML8= 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=W8hdysWY; arc=none smtp.client-ip=216.71.153.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wdc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wdc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="W8hdysWY" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1758812619; x=1790348619; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L1r/8uxRlM/kp1r+xQYQKLRaeaIZcG+wTHH1zLo1dPg=; b=W8hdysWYHkGlaZaI+EjkS2Y7jod/8FbdjqI6qj+kQZof7w+nqIbkYnMl np1vYfL6WeC6Wloe9GW7VA+6VoopxUtWBF+HxA4M3z5hulWUuBl26M+cb Kn9qD9HhRc2hDsv3MPbzLAy3Sm75z7K3VA9bjVK7mSgliinYtMGkwRStw ujEVQFxB6ZVAT6R2OcwrjA9gOVY+dmxrTIVH7XwYHWxJ3TAuGWscP+ydk OWYL0y3TBO7qNWOjifDkZsRsPBfShF65x6XneLd0eGEuSqIEr9JP3i82b EgZQk90V52BFdNcTB1ZOSSrVbMHfNvWRUr2+nnBkCR6ncNkwKdFMiQLhk A==; X-CSE-ConnectionGUID: xcaTH2reSTS05yPRBLm39Q== X-CSE-MsgGUID: JZ52WxhtSXG7fiKjoLWb2A== X-IronPort-AV: E=Sophos;i="6.18,292,1751212800"; d="scan'208";a="130348179" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 Sep 2025 23:03:38 +0800 IronPort-SDR: 68d559ca_2/71+nprOx7Ijcm7bzGr+JCTHvxvao7EDdCI7mi+R7r+T/F WylNHt8mj89UexRwpLblObjFSn+RijHH+fmIXKQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 25 Sep 2025 08:03:39 -0700 WDCIronportException: Internal Received: from c02g55f6ml85.ad.shared (HELO C02G55F6ML85.wdc.com) ([10.224.183.46]) by uls-op-cesaip02.wdc.com with ESMTP; 25 Sep 2025 08:03:35 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-btrace@vger.kernel.org, John Garry , Hannes Reinecke , Damien Le Moal , Christoph Hellwig , Naohiro Aota , Shinichiro Kawasaki , Chaitanya Kulkarni , "Martin K . Petersen" , Johannes Thumshirn Subject: [PATCH v2 15/15] blktrace: handle BLKTRACESETUP2 ioctl Date: Thu, 25 Sep 2025 17:02:31 +0200 Message-ID: <20250925150231.67342-16-johannes.thumshirn@wdc.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250925150231.67342-1-johannes.thumshirn@wdc.com> References: <20250925150231.67342-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 Reviewed-by: Damien Le Moal --- 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