virtio: scsi: make it clear that virtqueue_add_buf() no longer returns > 0
We simplified virtqueue_add_buf(), make it clear in the callers. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
57e1a37347
commit
4614e51ccc
1 changed files with 13 additions and 11 deletions
|
@ -215,7 +215,7 @@ static void virtscsi_ctrl_done(struct virtqueue *vq)
|
||||||
static int virtscsi_kick_event(struct virtio_scsi *vscsi,
|
static int virtscsi_kick_event(struct virtio_scsi *vscsi,
|
||||||
struct virtio_scsi_event_node *event_node)
|
struct virtio_scsi_event_node *event_node)
|
||||||
{
|
{
|
||||||
int ret;
|
int err;
|
||||||
struct scatterlist sg;
|
struct scatterlist sg;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
@ -223,13 +223,14 @@ static int virtscsi_kick_event(struct virtio_scsi *vscsi,
|
||||||
|
|
||||||
spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags);
|
spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags);
|
||||||
|
|
||||||
ret = virtqueue_add_buf(vscsi->event_vq.vq, &sg, 0, 1, event_node, GFP_ATOMIC);
|
err = virtqueue_add_buf(vscsi->event_vq.vq, &sg, 0, 1, event_node,
|
||||||
if (ret >= 0)
|
GFP_ATOMIC);
|
||||||
|
if (!err)
|
||||||
virtqueue_kick(vscsi->event_vq.vq);
|
virtqueue_kick(vscsi->event_vq.vq);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&vscsi->event_vq.vq_lock, flags);
|
spin_unlock_irqrestore(&vscsi->event_vq.vq_lock, flags);
|
||||||
|
|
||||||
return ret;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int virtscsi_kick_event_all(struct virtio_scsi *vscsi)
|
static int virtscsi_kick_event_all(struct virtio_scsi *vscsi)
|
||||||
|
@ -410,22 +411,23 @@ static int virtscsi_kick_cmd(struct virtio_scsi_target_state *tgt,
|
||||||
{
|
{
|
||||||
unsigned int out_num, in_num;
|
unsigned int out_num, in_num;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret;
|
int err;
|
||||||
|
bool needs_kick = false;
|
||||||
|
|
||||||
spin_lock_irqsave(&tgt->tgt_lock, flags);
|
spin_lock_irqsave(&tgt->tgt_lock, flags);
|
||||||
virtscsi_map_cmd(tgt, cmd, &out_num, &in_num, req_size, resp_size);
|
virtscsi_map_cmd(tgt, cmd, &out_num, &in_num, req_size, resp_size);
|
||||||
|
|
||||||
spin_lock(&vq->vq_lock);
|
spin_lock(&vq->vq_lock);
|
||||||
ret = virtqueue_add_buf(vq->vq, tgt->sg, out_num, in_num, cmd, gfp);
|
err = virtqueue_add_buf(vq->vq, tgt->sg, out_num, in_num, cmd, gfp);
|
||||||
spin_unlock(&tgt->tgt_lock);
|
spin_unlock(&tgt->tgt_lock);
|
||||||
if (ret >= 0)
|
if (!err)
|
||||||
ret = virtqueue_kick_prepare(vq->vq);
|
needs_kick = virtqueue_kick_prepare(vq->vq);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&vq->vq_lock, flags);
|
spin_unlock_irqrestore(&vq->vq_lock, flags);
|
||||||
|
|
||||||
if (ret > 0)
|
if (needs_kick)
|
||||||
virtqueue_notify(vq->vq);
|
virtqueue_notify(vq->vq);
|
||||||
return ret;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int virtscsi_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc)
|
static int virtscsi_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc)
|
||||||
|
@ -467,7 +469,7 @@ static int virtscsi_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc)
|
||||||
|
|
||||||
if (virtscsi_kick_cmd(tgt, &vscsi->req_vq, cmd,
|
if (virtscsi_kick_cmd(tgt, &vscsi->req_vq, cmd,
|
||||||
sizeof cmd->req.cmd, sizeof cmd->resp.cmd,
|
sizeof cmd->req.cmd, sizeof cmd->resp.cmd,
|
||||||
GFP_ATOMIC) >= 0)
|
GFP_ATOMIC) == 0)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
Loading…
Add table
Reference in a new issue