trans_xen.c (c002c27874faaa170b535d03d7efee89ecdd9be4) trans_xen.c (9523feac272ccad2ad8186ba4fcc89103754de52)
1/*
2 * linux/fs/9p/trans_xen
3 *
4 * Xen transport layer.
5 *
6 * Copyright (C) 2017 by Stefano Stabellini <stefano@aporeto.com>
7 *
8 * This program is free software; you can redistribute it and/or

--- 142 unchanged lines hidden (view full) ---

151 read_unlock(&xen_9pfs_lock);
152 if (!priv || priv->client != client)
153 return -EINVAL;
154
155 num = p9_req->tc->tag % priv->num_rings;
156 ring = &priv->rings[num];
157
158again:
1/*
2 * linux/fs/9p/trans_xen
3 *
4 * Xen transport layer.
5 *
6 * Copyright (C) 2017 by Stefano Stabellini <stefano@aporeto.com>
7 *
8 * This program is free software; you can redistribute it and/or

--- 142 unchanged lines hidden (view full) ---

151 read_unlock(&xen_9pfs_lock);
152 if (!priv || priv->client != client)
153 return -EINVAL;
154
155 num = p9_req->tc->tag % priv->num_rings;
156 ring = &priv->rings[num];
157
158again:
159 while (wait_event_interruptible(ring->wq,
160 p9_xen_write_todo(ring, size)) != 0)
159 while (wait_event_killable(ring->wq,
160 p9_xen_write_todo(ring, size)) != 0)
161 ;
162
163 spin_lock_irqsave(&ring->lock, flags);
164 cons = ring->intf->out_cons;
165 prod = ring->intf->out_prod;
166 virt_mb();
167
168 if (XEN_9PFS_RING_SIZE - xen_9pfs_queued(prod, cons,

--- 377 unchanged lines hidden ---
161 ;
162
163 spin_lock_irqsave(&ring->lock, flags);
164 cons = ring->intf->out_cons;
165 prod = ring->intf->out_prod;
166 virt_mb();
167
168 if (XEN_9PFS_RING_SIZE - xen_9pfs_queued(prod, cons,

--- 377 unchanged lines hidden ---