diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2012-01-12 15:44:42 +1030 | 
|---|---|---|
| committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-01-12 15:44:42 +1030 | 
| commit | f96fde41f7f9af6cf20f6a1919f5d9670f84d574 (patch) | |
| tree | 14b8a0343b255989ac8ba0ea34e18dca419723df | |
| parent | 5dfc17628d57f9e62043ed0cba03a6e3eb019a78 (diff) | |
virtio: rename virtqueue_add_buf_gfp to virtqueue_add_buf
Remove wrapper functions. This makes the allocation type explicit in
all callers; I used GPF_KERNEL where it seemed obvious, left it at
GFP_ATOMIC otherwise.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Reviewed-by: Christoph Hellwig <hch@lst.de>
| -rw-r--r-- | drivers/block/virtio_blk.c | 2 | ||||
| -rw-r--r-- | drivers/char/hw_random/virtio-rng.c | 2 | ||||
| -rw-r--r-- | drivers/char/virtio_console.c | 6 | ||||
| -rw-r--r-- | drivers/net/virtio_net.c | 12 | ||||
| -rw-r--r-- | drivers/virtio/virtio_balloon.c | 7 | ||||
| -rw-r--r-- | drivers/virtio/virtio_ring.c | 22 | ||||
| -rw-r--r-- | include/linux/virtio.h | 21 | ||||
| -rw-r--r-- | net/9p/trans_virtio.c | 6 | ||||
| -rw-r--r-- | tools/virtio/linux/virtio.h | 21 | ||||
| -rw-r--r-- | tools/virtio/virtio_test.c | 3 | 
10 files changed, 44 insertions, 58 deletions
| diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 4d0b70adf5f7..a345e40e1bca 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -172,7 +172,7 @@ static bool do_req(struct request_queue *q, struct virtio_blk *vblk,  		}  	} -	if (virtqueue_add_buf(vblk->vq, vblk->sg, out, in, vbr) < 0) { +	if (virtqueue_add_buf(vblk->vq, vblk->sg, out, in, vbr, GFP_ATOMIC)<0) {  		mempool_free(vbr, vblk->pool);  		return false;  	} diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c index fd699ccecf5b..723725bbb96b 100644 --- a/drivers/char/hw_random/virtio-rng.c +++ b/drivers/char/hw_random/virtio-rng.c @@ -47,7 +47,7 @@ static void register_buffer(u8 *buf, size_t size)  	sg_init_one(&sg, buf, size);  	/* There should always be room for one buffer. */ -	if (virtqueue_add_buf(vq, &sg, 0, 1, buf) < 0) +	if (virtqueue_add_buf(vq, &sg, 0, 1, buf, GFP_KERNEL) < 0)  		BUG();  	virtqueue_kick(vq); diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 8e3c46d67cb3..d1ae1492ee78 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -392,7 +392,7 @@ static int add_inbuf(struct virtqueue *vq, struct port_buffer *buf)  	sg_init_one(sg, buf->buf, buf->size); -	ret = virtqueue_add_buf(vq, sg, 0, 1, buf); +	ret = virtqueue_add_buf(vq, sg, 0, 1, buf, GFP_ATOMIC);  	virtqueue_kick(vq);  	return ret;  } @@ -457,7 +457,7 @@ static ssize_t __send_control_msg(struct ports_device *portdev, u32 port_id,  	vq = portdev->c_ovq;  	sg_init_one(sg, &cpkt, sizeof(cpkt)); -	if (virtqueue_add_buf(vq, sg, 1, 0, &cpkt) >= 0) { +	if (virtqueue_add_buf(vq, sg, 1, 0, &cpkt, GFP_ATOMIC) >= 0) {  		virtqueue_kick(vq);  		while (!virtqueue_get_buf(vq, &len))  			cpu_relax(); @@ -506,7 +506,7 @@ static ssize_t send_buf(struct port *port, void *in_buf, size_t in_count,  	reclaim_consumed_buffers(port);  	sg_init_one(sg, in_buf, in_count); -	ret = virtqueue_add_buf(out_vq, sg, 1, 0, in_buf); +	ret = virtqueue_add_buf(out_vq, sg, 1, 0, in_buf, GFP_ATOMIC);  	/* Tell Host to go! */  	virtqueue_kick(out_vq); diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 76fe14efb2b5..6345a52194f9 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -370,7 +370,7 @@ static int add_recvbuf_small(struct virtnet_info *vi, gfp_t gfp)  	skb_to_sgvec(skb, vi->rx_sg + 1, 0, skb->len); -	err = virtqueue_add_buf_gfp(vi->rvq, vi->rx_sg, 0, 2, skb, gfp); +	err = virtqueue_add_buf(vi->rvq, vi->rx_sg, 0, 2, skb, gfp);  	if (err < 0)  		dev_kfree_skb(skb); @@ -415,8 +415,8 @@ static int add_recvbuf_big(struct virtnet_info *vi, gfp_t gfp)  	/* chain first in list head */  	first->private = (unsigned long)list; -	err = virtqueue_add_buf_gfp(vi->rvq, vi->rx_sg, 0, MAX_SKB_FRAGS + 2, -				    first, gfp); +	err = virtqueue_add_buf(vi->rvq, vi->rx_sg, 0, MAX_SKB_FRAGS + 2, +				first, gfp);  	if (err < 0)  		give_pages(vi, first); @@ -434,7 +434,7 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, gfp_t gfp)  	sg_init_one(vi->rx_sg, page_address(page), PAGE_SIZE); -	err = virtqueue_add_buf_gfp(vi->rvq, vi->rx_sg, 0, 1, page, gfp); +	err = virtqueue_add_buf(vi->rvq, vi->rx_sg, 0, 1, page, gfp);  	if (err < 0)  		give_pages(vi, page); @@ -609,7 +609,7 @@ static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)  	hdr->num_sg = skb_to_sgvec(skb, vi->tx_sg + 1, 0, skb->len) + 1;  	return virtqueue_add_buf(vi->svq, vi->tx_sg, hdr->num_sg, -					0, skb); +				 0, skb, GFP_ATOMIC);  }  static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) @@ -767,7 +767,7 @@ static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd,  		sg_set_buf(&sg[i + 1], sg_virt(s), s->length);  	sg_set_buf(&sg[out + in - 1], &status, sizeof(status)); -	BUG_ON(virtqueue_add_buf(vi->cvq, sg, out, in, vi) < 0); +	BUG_ON(virtqueue_add_buf(vi->cvq, sg, out, in, vi, GFP_ATOMIC) < 0);  	virtqueue_kick(vi->cvq); diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index f64ff185b8b5..0a6425aadf95 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -88,7 +88,7 @@ static void tell_host(struct virtio_balloon *vb, struct virtqueue *vq)  	init_completion(&vb->acked);  	/* We should always be able to add one buffer to an empty queue. */ -	if (virtqueue_add_buf(vq, &sg, 1, 0, vb) < 0) +	if (virtqueue_add_buf(vq, &sg, 1, 0, vb, GFP_KERNEL) < 0)  		BUG();  	virtqueue_kick(vq); @@ -220,7 +220,7 @@ static void stats_handle_request(struct virtio_balloon *vb)  	vq = vb->stats_vq;  	sg_init_one(&sg, vb->stats, sizeof(vb->stats)); -	if (virtqueue_add_buf(vq, &sg, 1, 0, vb) < 0) +	if (virtqueue_add_buf(vq, &sg, 1, 0, vb, GFP_KERNEL) < 0)  		BUG();  	virtqueue_kick(vq);  } @@ -313,7 +313,8 @@ static int virtballoon_probe(struct virtio_device *vdev)  		 * use it to signal us later.  		 */  		sg_init_one(&sg, vb->stats, sizeof vb->stats); -		if (virtqueue_add_buf(vb->stats_vq, &sg, 1, 0, vb) < 0) +		if (virtqueue_add_buf(vb->stats_vq, &sg, 1, 0, vb, GFP_KERNEL) +		    < 0)  			BUG();  		virtqueue_kick(vb->stats_vq);  	} diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index fe50486341a4..6ea92a6d1134 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -167,7 +167,7 @@ static int vring_add_indirect(struct vring_virtqueue *vq,  }  /** - * virtqueue_add_buf_gfp - expose buffer to other end + * virtqueue_add_buf - expose buffer to other end   * @vq: the struct virtqueue we're talking about.   * @sg: the description of the buffer(s).   * @out_num: the number of sg readable by other side @@ -183,12 +183,12 @@ static int vring_add_indirect(struct vring_virtqueue *vq,   * positive return values as "available": indirect buffers mean that   * we can put an entire sg[] array inside a single queue entry.   */ -int virtqueue_add_buf_gfp(struct virtqueue *_vq, -			  struct scatterlist sg[], -			  unsigned int out, -			  unsigned int in, -			  void *data, -			  gfp_t gfp) +int virtqueue_add_buf(struct virtqueue *_vq, +		      struct scatterlist sg[], +		      unsigned int out, +		      unsigned int in, +		      void *data, +		      gfp_t gfp)  {  	struct vring_virtqueue *vq = to_vvq(_vq);  	unsigned int i, avail, uninitialized_var(prev); @@ -259,13 +259,13 @@ add_head:  	return vq->num_free;  } -EXPORT_SYMBOL_GPL(virtqueue_add_buf_gfp); +EXPORT_SYMBOL_GPL(virtqueue_add_buf);  /**   * virtqueue_kick - update after add_buf   * @vq: the struct virtqueue   * - * After one or more virtqueue_add_buf_gfp calls, invoke this to kick + * After one or more virtqueue_add_buf calls, invoke this to kick   * the other side.   *   * Caller must ensure we don't call this with other virtqueue @@ -341,7 +341,7 @@ static inline bool more_used(const struct vring_virtqueue *vq)   * operations at the same time (except where noted).   *   * Returns NULL if there are no used buffers, or the "data" token - * handed to virtqueue_add_buf_gfp(). + * handed to virtqueue_add_buf().   */  void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)  { @@ -490,7 +490,7 @@ EXPORT_SYMBOL_GPL(virtqueue_enable_cb_delayed);   * virtqueue_detach_unused_buf - detach first unused buffer   * @vq: the struct virtqueue we're talking about.   * - * Returns NULL or the "data" token handed to virtqueue_add_buf_gfp(). + * Returns NULL or the "data" token handed to virtqueue_add_buf().   * This is not valid on an active queue; it is useful only for device   * shutdown.   */ diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 73ad7243128f..ec1706e7df50 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -25,21 +25,12 @@ struct virtqueue {  	void *priv;  }; -int virtqueue_add_buf_gfp(struct virtqueue *vq, -			  struct scatterlist sg[], -			  unsigned int out_num, -			  unsigned int in_num, -			  void *data, -			  gfp_t gfp); - -static inline int virtqueue_add_buf(struct virtqueue *vq, -				    struct scatterlist sg[], -				    unsigned int out_num, -				    unsigned int in_num, -				    void *data) -{ -	return virtqueue_add_buf_gfp(vq, sg, out_num, in_num, data, GFP_ATOMIC); -} +int virtqueue_add_buf(struct virtqueue *vq, +		      struct scatterlist sg[], +		      unsigned int out_num, +		      unsigned int in_num, +		      void *data, +		      gfp_t gfp);  void virtqueue_kick(struct virtqueue *vq); diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c index 330421e54713..3d432068f627 100644 --- a/net/9p/trans_virtio.c +++ b/net/9p/trans_virtio.c @@ -272,7 +272,8 @@ req_retry:  	in = pack_sg_list(chan->sg, out,  			  VIRTQUEUE_NUM, req->rc->sdata, req->rc->capacity); -	err = virtqueue_add_buf(chan->vq, chan->sg, out, in, req->tc); +	err = virtqueue_add_buf(chan->vq, chan->sg, out, in, req->tc, +				GFP_ATOMIC);  	if (err < 0) {  		if (err == -ENOSPC) {  			chan->ring_bufs_avail = 0; @@ -414,7 +415,8 @@ req_retry_pinned:  		in += pack_sg_list_p(chan->sg, out + in, VIRTQUEUE_NUM,  				     in_pages, in_nr_pages, uidata, inlen); -	err = virtqueue_add_buf(chan->vq, chan->sg, out, in, req->tc); +	err = virtqueue_add_buf(chan->vq, chan->sg, out, in, req->tc, +				GFP_ATOMIC);  	if (err < 0) {  		if (err == -ENOSPC) {  			chan->ring_bufs_avail = 0; diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h index 953db2abf6b9..b4fbc91c41b4 100644 --- a/tools/virtio/linux/virtio.h +++ b/tools/virtio/linux/virtio.h @@ -186,21 +186,12 @@ struct virtqueue {  #endif  /* Interfaces exported by virtio_ring. */ -int virtqueue_add_buf_gfp(struct virtqueue *vq, -			  struct scatterlist sg[], -			  unsigned int out_num, -			  unsigned int in_num, -			  void *data, -			  gfp_t gfp); - -static inline int virtqueue_add_buf(struct virtqueue *vq, -				    struct scatterlist sg[], -				    unsigned int out_num, -				    unsigned int in_num, -				    void *data) -{ -	return virtqueue_add_buf_gfp(vq, sg, out_num, in_num, data, GFP_ATOMIC); -} +int virtqueue_add_buf(struct virtqueue *vq, +		      struct scatterlist sg[], +		      unsigned int out_num, +		      unsigned int in_num, +		      void *data, +		      gfp_t gfp);  void virtqueue_kick(struct virtqueue *vq); diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c index 0740284396c1..6bf95f995364 100644 --- a/tools/virtio/virtio_test.c +++ b/tools/virtio/virtio_test.c @@ -161,7 +161,8 @@ static void run_test(struct vdev_info *dev, struct vq_info *vq, int bufs)  			if (started < bufs) {  				sg_init_one(&sl, dev->buf, dev->buf_size);  				r = virtqueue_add_buf(vq->vq, &sl, 1, 0, -						      dev->buf + started); +						      dev->buf + started, +						      GFP_ATOMIC);  				if (likely(r >= 0)) {  					++started;  					virtqueue_kick(vq->vq); | 
