From nobody Sat Feb 7 11:31:43 2026 Received: from e2i340.smtp2go.com (e2i340.smtp2go.com [103.2.141.84]) (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 5BBDD225416 for ; Fri, 23 Jan 2026 15:06:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.2.141.84 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769180804; cv=none; b=K4HV6lEw/KyrVNF0kCaYBpEKqyCv04tDXd69Zv8M4x/mnkijA3l3Ik670ERHxesFzeqX4UxvwPEPFwNjjYhfr3oD88FXi9XUPk/AfCemnZYYaM/XmoD3juICyfvMgRJXQ/3GmoEBJzJdKSvz6pquBNAeoi9Jm6eGFe5QEEuNT6E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769180804; c=relaxed/simple; bh=XtiAGoBQ1blzOcjTq8pgxagTyavwnvETQwdQ0jnB2rA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=myT2A0AMM45TDDFtyhDO66OWobqXYt9q/IppHSAj+qsONxagKHzJzJUE8kZDWmmhrUGjZWovrjxzKnzSBxCCL6HmZ2AmlufkZgwy0eLXlHsfJ6hUaFdRU5Sd0zN4YwOxDLFPjFJlPCj0Gk8l9XqZSW6A8pX/ZLA9CiCkeTRRdqs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=triplefau.lt; spf=pass smtp.mailfrom=em510616.triplefau.lt; dkim=fail (0-bit key) header.d=smtpservice.net header.i=@smtpservice.net header.b=rG+YUN+I reason="unknown key version"; dkim=pass (2048-bit key) header.d=triplefau.lt header.i=@triplefau.lt header.b=mqN4wt1+; arc=none smtp.client-ip=103.2.141.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=triplefau.lt Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=em510616.triplefau.lt Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="unknown key version" (0-bit key) header.d=smtpservice.net header.i=@smtpservice.net header.b="rG+YUN+I"; dkim=pass (2048-bit key) header.d=triplefau.lt header.i=@triplefau.lt header.b="mqN4wt1+" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=maxzs0.a1-4.dyn; x=1769181702; h=Feedback-ID: X-Smtpcorp-Track:Message-ID:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe:List-Unsubscribe-Post; bh=5hlZx6sa9MG8kpnxvIumfa5wATQurfzuGf1yx1tG58U=; b=rG+YUN+IFk2Uo2+3L8g0hJgppq JMvptburONsm6jssNbv8u7IBYv579sPdAFT/OZckPisjjnxPEvEJ02wD9S364vjkOYfGuSZNwlhtr +n/6+IM7ib9YXhczIHVb2NTQBYc1T3U/vFhWmEO6/gPiFTqXiZy0J4bvIwemFd1Lxc7W806z68yTD 8QduczFf14UP+bXhfn0x+miG9vWea/V2t889fRitM0z+KhmawK1blN9kDOrhuUbJADyzQiRG5iW1i kzzyxU/e9Q0uDs8RViAHdslAP2uFl96Qx4FN2I7V0a9gyLmgWUDMLGvipWSK8c0iywuJyoeipRDBc JXztn7SA==; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=triplefau.lt; i=@triplefau.lt; q=dns/txt; s=s510616; t=1769180802; h=from : subject : to : message-id : date; bh=5hlZx6sa9MG8kpnxvIumfa5wATQurfzuGf1yx1tG58U=; b=mqN4wt1+1Wshvek+Cu3S5PJXQUXD9ETb9epELp+OHL+fZwoqIXCc5fzuiQpE83ERXwcQm EgsVOWjifYRZExpDVd/2Oj1xifsOHg4gyRZlm5YT3RKkM5o97XuGvq+F8pQiGoYbCwyEvD3 OjcOpWT/5GqzNiMGZ/yZq0+W6QEQI8VvCAv6PYooIr+V1b2WsAxuEr5yVoHymCiR1XOsnLB kqBK1r1rBNVHoZerXn16incK6kqf2HNAWL9sc6B/7nuh5xYUWliCm3r/UE8vvVi0qT8fCnr 4JjjBWDqa26Qr03nLosnhvCoCAsI4fG2eZNQGa4d9vQ7Jci0np7QVBJVDGzw== Received: from [10.172.233.45] (helo=SmtpCorp) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94.2-S2G) (envelope-from ) id 1vjIjN-TRk3Nn-Sa; Fri, 23 Jan 2026 15:05:49 +0000 Received: from [10.12.239.196] (helo=localhost) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.1-S2G) (envelope-from ) id 1vjIjN-AIkwcC8p21S-ImA4; Fri, 23 Jan 2026 15:05:49 +0000 From: Remi Pommarel To: Peter Zijlstra , Ingo Molnar , v9fs@lists.linux.dev Cc: Juri Lelli , Vincent Guittot , Eric Van Hensbergen , Latchesar Ionkov , Dominique Martinet , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Remi Pommarel Subject: [PATCH v2 1/2] wait: Introduce io_wait_event_killable() Date: Fri, 23 Jan 2026 15:48:07 +0100 Message-ID: <1b2870001ecd34fe6c05be2ddfefb3c798b11701.1769179462.git.repk@triplefau.lt> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: 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 X-Smtpcorp-Track: mmyWQFswyAO3.GE0ELv72khhC.TP2jiQ0tFdM Feedback-ID: 510616m:510616apGKSTK:510616siuLes3UuY X-Report-Abuse: Please forward a copy of this message, including all headers, to Content-Type: text/plain; charset="utf-8" Add io_wait_event_killable(), a variant of wait_event_killable() that uses io_schedule() instead of schedule(). This is to be used in situation where waiting time is to be accounted as IO wait time. Signed-off-by: Remi Pommarel Acked-by: Peter Zijlstra (Intel) --- include/linux/wait.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/linux/wait.h b/include/linux/wait.h index f648044466d5..dce055e6add3 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -937,6 +937,21 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_= queue_entry_t *); __ret; \ }) =20 +#define __io_wait_event_killable(wq, condition) \ + ___wait_event(wq, condition, TASK_KILLABLE, 0, 0, io_schedule()) + +/* + * wait_event_killable() - link wait_event_killable but with io_schedule() + */ +#define io_wait_event_killable(wq_head, condition) \ +({ \ + int __ret =3D 0; \ + might_sleep(); \ + if (!(condition)) \ + __ret =3D __io_wait_event_killable(wq_head, condition); \ + __ret; \ +}) + #define __wait_event_state(wq, condition, state) \ ___wait_event(wq, condition, state, 0, 0, schedule()) =20 --=20 2.50.1 From nobody Sat Feb 7 11:31:43 2026 Received: from e2i340.smtp2go.com (e2i340.smtp2go.com [103.2.141.84]) (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 61700245005 for ; Fri, 23 Jan 2026 15:06:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.2.141.84 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769180803; cv=none; b=VnhJr7DRMjQBdfE7XSdC4jhH10/yUSpux5l4BgJap0AteXusWKrdNxSjoY1FR0t6VLjpM3Ugp2U0EP2NhCrMnCl6KS/jVh89Id8Chsl/b4gX+2TIGmcgQR1ENS+qwV+yGuv/+N1X3H1PsQIkMnTMry0vYF5lbFZL1mfk6V6rmok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769180803; c=relaxed/simple; bh=vjCLcCM2F3IicS+95q5ad2BGOrb3kOWYWjtQkuAY+fs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uVQFih4kzQPU6kuknhsey/gKDS7yG0S752l/gvPjPID638j/vXq/TOJ60FCp1WdHc6ScZ6XJ8gydX4Nljgu1oFTkCGxPGk42Mqinf2F4Rax8miTWDMZz66QTlW0XiQbXuMxXTqZMAMDtoifw/Ql+e8YJUXjHT1gpliqUhFxqdAQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=triplefau.lt; spf=pass smtp.mailfrom=em510616.triplefau.lt; dkim=fail (0-bit key) header.d=smtpservice.net header.i=@smtpservice.net header.b=kR2++EF/ reason="unknown key version"; dkim=pass (2048-bit key) header.d=triplefau.lt header.i=@triplefau.lt header.b=SWpoRkLx; arc=none smtp.client-ip=103.2.141.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=triplefau.lt Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=em510616.triplefau.lt Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="unknown key version" (0-bit key) header.d=smtpservice.net header.i=@smtpservice.net header.b="kR2++EF/"; dkim=pass (2048-bit key) header.d=triplefau.lt header.i=@triplefau.lt header.b="SWpoRkLx" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=maxzs0.a1-4.dyn; x=1769181702; h=Feedback-ID: X-Smtpcorp-Track:Message-ID:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe:List-Unsubscribe-Post; bh=6Y7DdxPq3eM3t0cx86EDuwdGb1aCri5BBH+ThrSGicw=; b=kR2++EF/l38lMLNBh1j6qKMTAs YXCI9/MpcVJ+X/AEUy5AffY0LZlyPtYnwiYInN86DZH3IeeX3xMmkO67jMZCt0rGnaf74ux0zaSuC 1bCshep41GZFHtyI6cq3iE95sSoUqNbAZ+QUK/jmljcvIEXOXxCrhPTZbOFdAcKzCq+z7/5VjqOWq 4fHsmKy4UVYmESwhNC8crZcIcaxNLKLBDMxW4bePbeW/a7skuRdbYSeb0tJoN7MmMN5cQRVAmGsi5 DLyAmCDIvz7cwIkJUjfGakp0UUfw3t8rXxxhltoH5WCT3c1dDkwqO43zDAhsrXCtPgKcinAYWvhrI ao/IPT7w==; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=triplefau.lt; i=@triplefau.lt; q=dns/txt; s=s510616; t=1769180802; h=from : subject : to : message-id : date; bh=6Y7DdxPq3eM3t0cx86EDuwdGb1aCri5BBH+ThrSGicw=; b=SWpoRkLxVmnzND3WbXrh+YnkgC3q2XMaCWDHAlhOkIToP0PALg4JO+YjXsSJwi1hGyVeV fXqiqw8FO4e/NEEn/RV8Hzqf5WS8o4R9Fh2XGnMPr8xzsS8xUGakbzxfPBfXOir+OuE8E5h q8Kz4BwJhqwwvR6pPBv3Tk8GY5FJ+qi7exXAc17ulTlkGFPlDrRW05u/Fal69tqF2N4js0o sNgRMheUa0DHf9kPpK4+KQaHQrK45Mc16cMhdZuJAIPdm7/UitFE/OAGoqjkBNAKjOMQWDI 5jc6Q0OfCxfWj60FHHDx0xWwZPI/rBmMUDq3B62X/jdXzpM7zruyrCZHv1rg== Received: from [10.176.58.103] (helo=SmtpCorp) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94.2-S2G) (envelope-from ) id 1vjIjO-TRk3SA-Pq; Fri, 23 Jan 2026 15:05:50 +0000 Received: from [10.12.239.196] (helo=localhost) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.1-S2G) (envelope-from ) id 1vjIjO-4o5NDgrkAJF-qZA0; Fri, 23 Jan 2026 15:05:50 +0000 From: Remi Pommarel To: Peter Zijlstra , Ingo Molnar , v9fs@lists.linux.dev Cc: Juri Lelli , Vincent Guittot , Eric Van Hensbergen , Latchesar Ionkov , Dominique Martinet , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Remi Pommarel Subject: [PATCH v2 2/2] 9p: Track 9P RPC waiting time as IO Date: Fri, 23 Jan 2026 15:48:08 +0100 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: 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 X-Smtpcorp-Track: 59JJrJTOPCO7.lXJIXKIITGf-.tY9XDQdp3ru Feedback-ID: 510616m:510616apGKSTK:510616sagCjD9iGE X-Report-Abuse: Please forward a copy of this message, including all headers, to Content-Type: text/plain; charset="utf-8" Use io_wait_event_killable() to ensure that time spent waiting for 9P RPC transactions is accounted as IO wait time. Signed-off-by: Remi Pommarel Acked-by: Dominique Martinet --- net/9p/client.c | 4 ++-- net/9p/trans_virtio.c | 14 +++++++------- net/9p/trans_xen.c | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/net/9p/client.c b/net/9p/client.c index f60d1d041adb..1b475525ac5b 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -590,8 +590,8 @@ p9_client_rpc(struct p9_client *c, int8_t type, const c= har *fmt, ...) } again: /* Wait for the response */ - err =3D wait_event_killable(req->wq, - READ_ONCE(req->status) >=3D REQ_STATUS_RCVD); + err =3D io_wait_event_killable(req->wq, + READ_ONCE(req->status) >=3D REQ_STATUS_RCVD); =20 /* Make sure our req is coherent with regard to updates in other * threads - echoes to wmb() in the callback diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c index 10c2dd486438..370f4f37dcec 100644 --- a/net/9p/trans_virtio.c +++ b/net/9p/trans_virtio.c @@ -284,8 +284,8 @@ p9_virtio_request(struct p9_client *client, struct p9_r= eq_t *req) if (err =3D=3D -ENOSPC) { chan->ring_bufs_avail =3D 0; spin_unlock_irqrestore(&chan->lock, flags); - err =3D wait_event_killable(*chan->vc_wq, - chan->ring_bufs_avail); + err =3D io_wait_event_killable(*chan->vc_wq, + chan->ring_bufs_avail); if (err =3D=3D -ERESTARTSYS) return err; =20 @@ -325,7 +325,7 @@ static int p9_get_mapped_pages(struct virtio_chan *chan, * Other zc request to finish here */ if (atomic_read(&vp_pinned) >=3D chan->p9_max_pages) { - err =3D wait_event_killable(vp_wq, + err =3D io_wait_event_killable(vp_wq, (atomic_read(&vp_pinned) < chan->p9_max_pages)); if (err =3D=3D -ERESTARTSYS) return err; @@ -512,8 +512,8 @@ p9_virtio_zc_request(struct p9_client *client, struct p= 9_req_t *req, if (err =3D=3D -ENOSPC) { chan->ring_bufs_avail =3D 0; spin_unlock_irqrestore(&chan->lock, flags); - err =3D wait_event_killable(*chan->vc_wq, - chan->ring_bufs_avail); + err =3D io_wait_event_killable(*chan->vc_wq, + chan->ring_bufs_avail); if (err =3D=3D -ERESTARTSYS) goto err_out; =20 @@ -531,8 +531,8 @@ p9_virtio_zc_request(struct p9_client *client, struct p= 9_req_t *req, spin_unlock_irqrestore(&chan->lock, flags); kicked =3D 1; p9_debug(P9_DEBUG_TRANS, "virtio request kicked\n"); - err =3D wait_event_killable(req->wq, - READ_ONCE(req->status) >=3D REQ_STATUS_RCVD); + err =3D io_wait_event_killable(req->wq, + READ_ONCE(req->status) >=3D REQ_STATUS_RCVD); // RERROR needs reply (=3D=3D error string) in static data if (READ_ONCE(req->status) =3D=3D REQ_STATUS_RCVD && unlikely(req->rc.sdata[4] =3D=3D P9_RERROR)) diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c index 12f752a92332..d57965e6aab0 100644 --- a/net/9p/trans_xen.c +++ b/net/9p/trans_xen.c @@ -136,8 +136,8 @@ static int p9_xen_request(struct p9_client *client, str= uct p9_req_t *p9_req) ring =3D &priv->rings[num]; =20 again: - while (wait_event_killable(ring->wq, - p9_xen_write_todo(ring, size)) !=3D 0) + while (io_wait_event_killable(ring->wq, + p9_xen_write_todo(ring, size)) !=3D 0) ; =20 spin_lock_irqsave(&ring->lock, flags); --=20 2.50.1