mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 05:04:51 +01:00
9p: Track 9P RPC waiting time as IO
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 <repk@triplefau.lt> Message-ID: <b8601271263011203fa34eada2e8ac21d9f679e5.1769179462.git.repk@triplefau.lt> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
This commit is contained in:
parent
ca136b2553
commit
51ffeabe83
3 changed files with 11 additions and 11 deletions
|
|
@ -590,8 +590,8 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
|
|||
}
|
||||
again:
|
||||
/* Wait for the response */
|
||||
err = wait_event_killable(req->wq,
|
||||
READ_ONCE(req->status) >= REQ_STATUS_RCVD);
|
||||
err = io_wait_event_killable(req->wq,
|
||||
READ_ONCE(req->status) >= REQ_STATUS_RCVD);
|
||||
|
||||
/* Make sure our req is coherent with regard to updates in other
|
||||
* threads - echoes to wmb() in the callback
|
||||
|
|
|
|||
|
|
@ -284,8 +284,8 @@ req_retry:
|
|||
if (err == -ENOSPC) {
|
||||
chan->ring_bufs_avail = 0;
|
||||
spin_unlock_irqrestore(&chan->lock, flags);
|
||||
err = wait_event_killable(*chan->vc_wq,
|
||||
chan->ring_bufs_avail);
|
||||
err = io_wait_event_killable(*chan->vc_wq,
|
||||
chan->ring_bufs_avail);
|
||||
if (err == -ERESTARTSYS)
|
||||
return err;
|
||||
|
||||
|
|
@ -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) >= chan->p9_max_pages) {
|
||||
err = wait_event_killable(vp_wq,
|
||||
err = io_wait_event_killable(vp_wq,
|
||||
(atomic_read(&vp_pinned) < chan->p9_max_pages));
|
||||
if (err == -ERESTARTSYS)
|
||||
return err;
|
||||
|
|
@ -512,8 +512,8 @@ req_retry_pinned:
|
|||
if (err == -ENOSPC) {
|
||||
chan->ring_bufs_avail = 0;
|
||||
spin_unlock_irqrestore(&chan->lock, flags);
|
||||
err = wait_event_killable(*chan->vc_wq,
|
||||
chan->ring_bufs_avail);
|
||||
err = io_wait_event_killable(*chan->vc_wq,
|
||||
chan->ring_bufs_avail);
|
||||
if (err == -ERESTARTSYS)
|
||||
goto err_out;
|
||||
|
||||
|
|
@ -531,8 +531,8 @@ req_retry_pinned:
|
|||
spin_unlock_irqrestore(&chan->lock, flags);
|
||||
kicked = 1;
|
||||
p9_debug(P9_DEBUG_TRANS, "virtio request kicked\n");
|
||||
err = wait_event_killable(req->wq,
|
||||
READ_ONCE(req->status) >= REQ_STATUS_RCVD);
|
||||
err = io_wait_event_killable(req->wq,
|
||||
READ_ONCE(req->status) >= REQ_STATUS_RCVD);
|
||||
// RERROR needs reply (== error string) in static data
|
||||
if (READ_ONCE(req->status) == REQ_STATUS_RCVD &&
|
||||
unlikely(req->rc.sdata[4] == P9_RERROR))
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@ static int p9_xen_request(struct p9_client *client, struct p9_req_t *p9_req)
|
|||
ring = &priv->rings[num];
|
||||
|
||||
again:
|
||||
while (wait_event_killable(ring->wq,
|
||||
p9_xen_write_todo(ring, size)) != 0)
|
||||
while (io_wait_event_killable(ring->wq,
|
||||
p9_xen_write_todo(ring, size)) != 0)
|
||||
;
|
||||
|
||||
spin_lock_irqsave(&ring->lock, flags);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue