pr_debug() is too specific. Let's use pr_warn_ratelimited() so we
get better exposure

https://virtuozzo.atlassian.net/browse/VSTOR-134034
Signed-off-by: Andrey Zhadchenko <[email protected]>
---
 drivers/vhost/blk.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/vhost/blk.c b/drivers/vhost/blk.c
index e4236df2f2161..7e33a4f30165d 100644
--- a/drivers/vhost/blk.c
+++ b/drivers/vhost/blk.c
@@ -51,6 +51,14 @@ enum {
 
 #define NR_INLINE 16
 
+#define vhostblk_vq_err(blk, vq, fmt, ...) do {                                
\
+               pr_warn_ratelimited(KBUILD_MODNAME "(%d) : " fmt,       \
+                                   blk->owner_pid, ##__VA_ARGS__);     \
+               if ((vq)->error_ctx)                                    \
+                       eventfd_signal((vq)->error_ctx);                \
+       } while (0)
+
+
 struct vhost_blk_req {
        struct bio *inline_bio[NR_INLINE];
        int req_bin;
@@ -94,6 +102,7 @@ struct vhost_blk {
        int new_req_bin;
        struct file *backend;
        char serial[VIRTIO_BLK_ID_BYTES];
+       pid_t owner_pid;
 };
 
 static int gen;
@@ -133,7 +142,7 @@ static inline int vhost_blk_set_status(struct vhost_blk_req 
*req, u8 status)
        iov_iter_init(&iter, ITER_DEST, req->status, ARRAY_SIZE(req->status), 
sizeof(status));
        ret = copy_to_iter(&status, sizeof(status), &iter);
        if (ret != sizeof(status)) {
-               vq_err(&req->blk_vq->vq, "Failed to write status\n");
+               vhostblk_vq_err(req->blk, &req->blk_vq->vq, "Failed to write 
status\n");
                return -EFAULT;
        }
 
@@ -481,7 +490,7 @@ static int vhost_blk_req_handle(struct vhost_virtqueue *vq,
                vhost_add_used_and_signal(&blk->dev, vq, head, len);
                break;
        default:
-               vq_err(vq, "Unsupported request type %d\n", hdr->type);
+               vhostblk_vq_err(blk, vq, "Unsupported request type %d\n", 
hdr->type);
                status = VIRTIO_BLK_S_UNSUPP;
                ret = vhost_blk_set_status(req, status);
                if (ret)
@@ -530,7 +539,7 @@ static void vhost_blk_handle_guest_kick(struct vhost_work 
*work)
 
                ret = move_iovec(vq->iov, hdr_iovec, sizeof(hdr), in + out, 
ARRAY_SIZE(hdr_iovec));
                if (ret < 0) {
-                       vq_err(vq, "virtio_blk_hdr is too split!");
+                       vhostblk_vq_err(blk, vq, "virtio_blk_hdr (head %d) is 
too split!", head);
                        vhost_discard_vq_desc(vq, 1);
                        break;
                }
@@ -538,8 +547,8 @@ static void vhost_blk_handle_guest_kick(struct vhost_work 
*work)
                iov_iter_init(&iter, ITER_SOURCE, hdr_iovec, 
ARRAY_SIZE(hdr_iovec), sizeof(hdr));
                ret = copy_from_iter(&hdr, sizeof(hdr), &iter);
                if (ret != sizeof(hdr)) {
-                       vq_err(vq, "Failed to get block header: read %d bytes 
instead of %ld!\n",
-                              ret, sizeof(hdr));
+                       vhostblk_vq_err(blk, vq, "Failed to get read header 
(head %d): got %d, expected %ld!\n",
+                                       head, ret, sizeof(hdr));
                        vhost_discard_vq_desc(vq, 1);
                        break;
                }
@@ -671,6 +680,7 @@ static int vhost_blk_open(struct inode *inode, struct file 
*file)
        blk->new_req_bin = 0;
        spin_lock_init(&blk->flush_lock);
        init_waitqueue_head(&blk->flush_wait);
+       blk->owner_pid = current->pid;
 
        vhost_dev_init(&blk->dev, vqs, VHOST_BLK_VQ_MAX, UIO_MAXIOV,
                       VHOST_DEV_WEIGHT, VHOST_DEV_PKT_WEIGHT, true, NULL);
-- 
2.43.5

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to