vhost-scsi: adjust vhost_scsi_get_desc() to log vring descriptors
authorDongli Zhang <dongli.zhang@oracle.com>
Thu, 3 Apr 2025 06:29:50 +0000 (23:29 -0700)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 18 May 2025 21:25:24 +0000 (17:25 -0400)
Adjust vhost_scsi_get_desc() to facilitate logging of vring descriptors.

Add new arguments to allow passing the log buffer and length to
vhost_get_vq_desc().

In addition, reset 'log_num' since vhost_get_vq_desc() may reset it only
after certain condition checks.

Suggested-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Message-Id: <20250403063028.16045-6-dongli.zhang@oracle.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/scsi.c

index 26bcf3a..3875967 100644 (file)
@@ -1063,13 +1063,17 @@ vhost_scsi_send_bad_target(struct vhost_scsi *vs,
 
 static int
 vhost_scsi_get_desc(struct vhost_scsi *vs, struct vhost_virtqueue *vq,
-                   struct vhost_scsi_ctx *vc)
+                   struct vhost_scsi_ctx *vc,
+                   struct vhost_log *log, unsigned int *log_num)
 {
        int ret = -ENXIO;
 
+       if (likely(log_num))
+               *log_num = 0;
+
        vc->head = vhost_get_vq_desc(vq, vq->iov,
                                     ARRAY_SIZE(vq->iov), &vc->out, &vc->in,
-                                    NULL, NULL);
+                                    log, log_num);
 
        pr_debug("vhost_get_vq_desc: head: %d, out: %u in: %u\n",
                 vc->head, vc->out, vc->in);
@@ -1237,7 +1241,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq)
        vhost_disable_notify(&vs->dev, vq);
 
        do {
-               ret = vhost_scsi_get_desc(vs, vq, &vc);
+               ret = vhost_scsi_get_desc(vs, vq, &vc, NULL, NULL);
                if (ret)
                        goto err;
 
@@ -1581,7 +1585,7 @@ vhost_scsi_ctl_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq)
        vhost_disable_notify(&vs->dev, vq);
 
        do {
-               ret = vhost_scsi_get_desc(vs, vq, &vc);
+               ret = vhost_scsi_get_desc(vs, vq, &vc, NULL, NULL);
                if (ret)
                        goto err;