get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/105362/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 105362,
    "url": "http://patches.dpdk.org/api/patches/105362/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20211223083659.245766-6-maxime.coquelin@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20211223083659.245766-6-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211223083659.245766-6-maxime.coquelin@redhat.com",
    "date": "2021-12-23T08:36:57",
    "name": "[5/7] vhost: improve Vhost-user layer logs",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "307cadccf0f93c94a9aa1cc66fe5ad5467867dd1",
    "submitter": {
        "id": 512,
        "url": "http://patches.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20211223083659.245766-6-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 21013,
            "url": "http://patches.dpdk.org/api/series/21013/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=21013",
            "date": "2021-12-23T08:36:52",
            "name": "vhost: improve logging",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/21013/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/105362/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/105362/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 39D4FA0350;\n\tThu, 23 Dec 2021 09:38:19 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 29D91410E0;\n\tThu, 23 Dec 2021 09:38:19 +0100 (CET)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by mails.dpdk.org (Postfix) with ESMTP id B2FB041163\n for <dev@dpdk.org>; Thu, 23 Dec 2021 09:37:42 +0100 (CET)",
            "from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com\n [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n us-mta-333-BuyGYUowO-Ojdkngb8Tv2w-1; Thu, 23 Dec 2021 03:37:40 -0500",
            "from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com\n [10.5.11.11])\n (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n (No client certificate requested)\n by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B6ED581EE60;\n Thu, 23 Dec 2021 08:37:39 +0000 (UTC)",
            "from max-t490s.redhat.com (unknown [10.39.208.14])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 7397360BD8;\n Thu, 23 Dec 2021 08:37:34 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1640248662;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=j+8nDr/xKrteHZobw9ft46pZGJBK9y05Se13Gzt3zgg=;\n b=Ih2ZHxtld0zwh7z2WFFZ0Nw0gqTG+0EzywSGfCHTmf1YBtjxVd0wexqvjQVzohkdGS0nCe\n YqUQzGAV65w809x9KkcgCgbGKYy/hKIXgWvD6UWLSGXFtUM3LgQ9uIa9rZGbHdOchYt0b6\n EhoUen4xfHfTcOZmRuz/j6WOeBqyfew=",
        "X-MC-Unique": "BuyGYUowO-Ojdkngb8Tv2w-1",
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "To": "dev@dpdk.org,\n\tchenbo.xia@intel.com,\n\tdavid.marchand@redhat.com",
        "Cc": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "Subject": "[PATCH 5/7] vhost: improve Vhost-user layer logs",
        "Date": "Thu, 23 Dec 2021 09:36:57 +0100",
        "Message-Id": "<20211223083659.245766-6-maxime.coquelin@redhat.com>",
        "In-Reply-To": "<20211223083659.245766-1-maxime.coquelin@redhat.com>",
        "References": "<20211223083659.245766-1-maxime.coquelin@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.11",
        "Authentication-Results": "relay.mimecast.com;\n auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "This patch adds the Vhost-user socket path to Vhost-user\nlayer logs in order to ease logs filtering.\n\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n lib/vhost/vhost_user.c | 573 ++++++++++++++++++++---------------------\n 1 file changed, 275 insertions(+), 298 deletions(-)",
    "diff": "diff --git a/lib/vhost/vhost_user.c b/lib/vhost/vhost_user.c\nindex 67934be12c..923d619213 100644\n--- a/lib/vhost/vhost_user.c\n+++ b/lib/vhost/vhost_user.c\n@@ -94,7 +94,7 @@ static const char *vhost_message_str[VHOST_USER_MAX] = {\n };\n \n static int send_vhost_reply(int sockfd, struct VhostUserMsg *msg);\n-static int read_vhost_message(int sockfd, struct VhostUserMsg *msg);\n+static int read_vhost_message(struct virtio_net *dev, int sockfd, struct VhostUserMsg *msg);\n \n static void\n close_msg_fds(struct VhostUserMsg *msg)\n@@ -117,14 +117,13 @@ close_msg_fds(struct VhostUserMsg *msg)\n  * close all FDs and return an error if this is not the case.\n  */\n static int\n-validate_msg_fds(struct VhostUserMsg *msg, int expected_fds)\n+validate_msg_fds(struct virtio_net *dev, struct VhostUserMsg *msg, int expected_fds)\n {\n \tif (msg->fd_num == expected_fds)\n \t\treturn 0;\n \n-\tVHOST_LOG_CONFIG(ERR,\n-\t\t\" Expect %d FDs for request %s, received %d\\n\",\n-\t\texpected_fds,\n+\tVHOST_LOG_CONFIG(ERR, \"(%s) expect %d FDs for request %s, received %d\\n\",\n+\t\tdev->ifname, expected_fds,\n \t\tvhost_message_str[msg->request.master],\n \t\tmsg->fd_num);\n \n@@ -144,7 +143,7 @@ get_blk_size(int fd)\n }\n \n static int\n-async_dma_map(struct rte_vhost_mem_region *region, bool do_map)\n+async_dma_map(struct virtio_net *dev, struct rte_vhost_mem_region *region, bool do_map)\n {\n \tuint64_t host_iova;\n \tint ret = 0;\n@@ -172,7 +171,7 @@ async_dma_map(struct rte_vhost_mem_region *region, bool do_map)\n \t\t\tif (rte_errno == ENODEV || rte_errno == ENOTSUP)\n \t\t\t\treturn 0;\n \n-\t\t\tVHOST_LOG_CONFIG(ERR, \"DMA engine map failed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) DMA engine map failed\\n\", dev->ifname);\n \t\t\t/* DMA mapping errors won't stop VHST_USER_SET_MEM_TABLE. */\n \t\t\treturn 0;\n \t\t}\n@@ -188,7 +187,7 @@ async_dma_map(struct rte_vhost_mem_region *region, bool do_map)\n \t\t\tif (rte_errno == EINVAL)\n \t\t\t\treturn 0;\n \n-\t\t\tVHOST_LOG_CONFIG(ERR, \"DMA engine unmap failed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) DMA engine unmap failed\\n\", dev->ifname);\n \t\t\treturn ret;\n \t\t}\n \t}\n@@ -209,7 +208,7 @@ free_mem_region(struct virtio_net *dev)\n \t\treg = &dev->mem->regions[i];\n \t\tif (reg->host_user_addr) {\n \t\t\tif (dev->async_copy && rte_vfio_is_enabled(\"vfio\"))\n-\t\t\t\tasync_dma_map(reg, false);\n+\t\t\t\tasync_dma_map(dev, reg, false);\n \n \t\t\tmunmap(reg->mmap_addr, reg->mmap_size);\n \t\t\tclose(reg->fd);\n@@ -287,11 +286,13 @@ vhost_user_notify_queue_state(struct virtio_net *dev, uint16_t index,\n  * the device hasn't been initialised.\n  */\n static int\n-vhost_user_set_owner(struct virtio_net **pdev __rte_unused,\n+vhost_user_set_owner(struct virtio_net **pdev,\n \t\t\tstruct VhostUserMsg *msg,\n \t\t\tint main_fd __rte_unused)\n {\n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tstruct virtio_net *dev = *pdev;\n+\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \treturn RTE_VHOST_MSG_RESULT_OK;\n@@ -304,7 +305,7 @@ vhost_user_reset_owner(struct virtio_net **pdev,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tvhost_destroy_device_notify(dev);\n@@ -324,7 +325,7 @@ vhost_user_get_features(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tstruct virtio_net *dev = *pdev;\n \tuint64_t features = 0;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \trte_vhost_driver_get_features(dev->ifname, &features);\n@@ -346,7 +347,7 @@ vhost_user_get_queue_num(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tstruct virtio_net *dev = *pdev;\n \tuint32_t queue_num = 0;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \trte_vhost_driver_get_queue_num(dev->ifname, &queue_num);\n@@ -370,14 +371,13 @@ vhost_user_set_features(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tuint64_t vhost_features = 0;\n \tstruct rte_vdpa_device *vdpa_dev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \trte_vhost_driver_get_features(dev->ifname, &vhost_features);\n \tif (features & ~vhost_features) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"(%d) received invalid negotiated features.\\n\",\n-\t\t\tdev->vid);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) received invalid negotiated features.\\n\",\n+\t\t\tdev->ifname);\n \t\tdev->flags |= VIRTIO_DEV_FEATURES_FAILED;\n \t\tdev->status &= ~VIRTIO_DEVICE_STATUS_FEATURES_OK;\n \n@@ -394,9 +394,8 @@ vhost_user_set_features(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t * is enabled when the live-migration starts.\n \t\t */\n \t\tif ((dev->features ^ features) & ~(1ULL << VHOST_F_LOG_ALL)) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"(%d) features changed while device is running.\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) features changed while device is running.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \n@@ -413,11 +412,10 @@ vhost_user_set_features(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t} else {\n \t\tdev->vhost_hlen = sizeof(struct virtio_net_hdr);\n \t}\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"negotiated Virtio features: 0x%\" PRIx64 \"\\n\", dev->features);\n-\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\"(%d) mergeable RX buffers %s, virtio 1 %s\\n\",\n-\t\tdev->vid,\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) negotiated Virtio features: 0x%\" PRIx64 \"\\n\",\n+\t\t\tdev->ifname, dev->features);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) mergeable RX buffers %s, virtio 1 %s\\n\",\n+\t\tdev->ifname,\n \t\t(dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) ? \"on\" : \"off\",\n \t\t(dev->features & (1ULL << VIRTIO_F_VERSION_1)) ? \"on\" : \"off\");\n \n@@ -461,11 +459,12 @@ vhost_user_set_vring_num(struct virtio_net **pdev,\n \tstruct virtio_net *dev = *pdev;\n \tstruct vhost_virtqueue *vq = dev->virtqueue[msg->payload.state.index];\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (msg->payload.state.num > 32768) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"invalid virtqueue size %u\\n\", msg->payload.state.num);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid virtqueue size %u\\n\",\n+\t\t\t\tdev->ifname, msg->payload.state.num);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -482,8 +481,8 @@ vhost_user_set_vring_num(struct virtio_net **pdev,\n \t */\n \tif (!vq_is_packed(dev)) {\n \t\tif (vq->size & (vq->size - 1)) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"invalid virtqueue size %u\\n\", vq->size);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid virtqueue size %u\\n\",\n+\t\t\t\t\tdev->ifname, vq->size);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t}\n@@ -497,7 +496,8 @@ vhost_user_set_vring_num(struct virtio_net **pdev,\n \t\t\t\tRTE_CACHE_LINE_SIZE, vq->numa_node);\n \t\tif (!vq->shadow_used_packed) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\t\"failed to allocate memory for shadow used ring.\\n\");\n+\t\t\t\t\"(%s) failed to allocate memory for shadow used ring.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \n@@ -511,7 +511,8 @@ vhost_user_set_vring_num(struct virtio_net **pdev,\n \n \t\tif (!vq->shadow_used_split) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\t\"failed to allocate memory for vq internal data.\\n\");\n+\t\t\t\t\"(%s) failed to allocate memory for vq internal data.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t}\n@@ -522,8 +523,8 @@ vhost_user_set_vring_num(struct virtio_net **pdev,\n \t\t\t\tvq->size * sizeof(struct batch_copy_elem),\n \t\t\t\tRTE_CACHE_LINE_SIZE, vq->numa_node);\n \tif (!vq->batch_copy_elems) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"failed to allocate memory for batching copy.\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to allocate memory for batching copy.\\n\",\n+\t\t\tdev->ifname);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -559,7 +560,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \tret = get_mempolicy(&node, NULL, 0, vq->desc, MPOL_F_NODE | MPOL_F_ADDR);\n \tif (ret) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Unable to get virtqueue %d numa information.\\n\", index);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) unable to get virtqueue %d numa information.\\n\",\n+\t\t\t\tdev->ifname, index);\n \t\treturn dev;\n \t}\n \n@@ -568,13 +570,14 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \tvq = rte_realloc_socket(vq, sizeof(*vq), 0, node);\n \tif (!vq) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc virtqueue %d on node %d\\n\",\n-\t\t\t\tindex, node);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc virtqueue %d on node %d\\n\",\n+\t\t\t\tdev->ifname, index, node);\n \t\treturn dev;\n \t}\n \n \tif (vq != dev->virtqueue[index]) {\n-\t\tVHOST_LOG_CONFIG(INFO, \"reallocated virtqueue on node %d\\n\", node);\n+\t\tVHOST_LOG_CONFIG(INFO, \"(%s) reallocated virtqueue on node %d\\n\",\n+\t\t\t\tdev->ifname, node);\n \t\tdev->virtqueue[index] = vq;\n \t\tvhost_user_iotlb_init(dev, index);\n \t}\n@@ -585,7 +588,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \t\tsup = rte_realloc_socket(vq->shadow_used_packed, vq->size * sizeof(*sup),\n \t\t\t\tRTE_CACHE_LINE_SIZE, node);\n \t\tif (!sup) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc shadow packed on node %d\\n\", node);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc shadow packed on node %d\\n\",\n+\t\t\t\t\tdev->ifname, node);\n \t\t\treturn dev;\n \t\t}\n \t\tvq->shadow_used_packed = sup;\n@@ -595,7 +599,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \t\tsus = rte_realloc_socket(vq->shadow_used_split, vq->size * sizeof(*sus),\n \t\t\t\tRTE_CACHE_LINE_SIZE, node);\n \t\tif (!sus) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc shadow split on node %d\\n\", node);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc shadow split on node %d\\n\",\n+\t\t\t\t\tdev->ifname, node);\n \t\t\treturn dev;\n \t\t}\n \t\tvq->shadow_used_split = sus;\n@@ -604,7 +609,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \tbce = rte_realloc_socket(vq->batch_copy_elems, vq->size * sizeof(*bce),\n \t\t\tRTE_CACHE_LINE_SIZE, node);\n \tif (!bce) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc batch copy elem on node %d\\n\", node);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc batch copy elem on node %d\\n\",\n+\t\t\t\tdev->ifname, node);\n \t\treturn dev;\n \t}\n \tvq->batch_copy_elems = bce;\n@@ -614,7 +620,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \t\tlc = rte_realloc_socket(vq->log_cache, sizeof(*lc) * VHOST_LOG_CACHE_NR, 0, node);\n \t\tif (!lc) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc log cache on node %d\\n\", node);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc log cache on node %d\\n\",\n+\t\t\t\t\tdev->ifname, node);\n \t\t\treturn dev;\n \t\t}\n \t\tvq->log_cache = lc;\n@@ -625,8 +632,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \t\tri = rte_realloc_socket(vq->resubmit_inflight, sizeof(*ri), 0, node);\n \t\tif (!ri) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc resubmit inflight on node %d\\n\",\n-\t\t\t\t\tnode);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc resubmit inflight on node %d\\n\",\n+\t\t\t\t\tdev->ifname, node);\n \t\t\treturn dev;\n \t\t}\n \t\tvq->resubmit_inflight = ri;\n@@ -637,8 +644,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \t\t\trd = rte_realloc_socket(ri->resubmit_list, sizeof(*rd) * ri->resubmit_num,\n \t\t\t\t\t0, node);\n \t\t\tif (!rd) {\n-\t\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc resubmit list on node %d\\n\",\n-\t\t\t\t\t\tnode);\n+\t\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc resubmit list on node %d\\n\",\n+\t\t\t\t\t\tdev->ifname, node);\n \t\t\t\treturn dev;\n \t\t\t}\n \t\t\tri->resubmit_list = rd;\n@@ -654,7 +661,7 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \tret = get_mempolicy(&dev_node, NULL, 0, dev, MPOL_F_NODE | MPOL_F_ADDR);\n \tif (ret) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Unable to get Virtio dev %d numa information.\\n\", dev->vid);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) unable to get numa information.\\n\", dev->ifname);\n \t\treturn dev;\n \t}\n \n@@ -663,18 +670,20 @@ numa_realloc(struct virtio_net *dev, int index)\n \n \tdev = rte_realloc_socket(old_dev, sizeof(*dev), 0, node);\n \tif (!dev) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc dev on node %d\\n\", node);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc dev on node %d\\n\",\n+\t\t\t\tdev->ifname, node);\n \t\treturn old_dev;\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO, \"reallocated device on node %d\\n\", node);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) reallocated device on node %d\\n\", dev->ifname, node);\n \tvhost_devices[dev->vid] = dev;\n \n \tmem_size = sizeof(struct rte_vhost_memory) +\n \t\tsizeof(struct rte_vhost_mem_region) * dev->mem->nregions;\n \tmem = rte_realloc_socket(dev->mem, mem_size, 0, node);\n \tif (!mem) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc mem table on node %d\\n\", node);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc mem table on node %d\\n\",\n+\t\t\t\tdev->ifname, node);\n \t\treturn dev;\n \t}\n \tdev->mem = mem;\n@@ -682,7 +691,8 @@ numa_realloc(struct virtio_net *dev, int index)\n \tgp = rte_realloc_socket(dev->guest_pages, dev->max_guest_pages * sizeof(*gp),\n \t\t\tRTE_CACHE_LINE_SIZE, node);\n \tif (!gp) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to realloc guest pages on node %d\\n\", node);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to realloc guest pages on node %d\\n\",\n+\t\t\t\tdev->ifname, node);\n \t\treturn dev;\n \t}\n \tdev->guest_pages = gp;\n@@ -774,9 +784,8 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \t\tvq->log_guest_addr =\n \t\t\tlog_addr_to_gpa(dev, vq);\n \t\tif (vq->log_guest_addr == 0) {\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"(%d) failed to map log_guest_addr.\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to map log_guest_addr.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn dev;\n \t\t}\n \t}\n@@ -788,9 +797,8 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \t\tif (vq->desc_packed == NULL ||\n \t\t\t\tlen != sizeof(struct vring_packed_desc) *\n \t\t\t\tvq->size) {\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"(%d) failed to map desc_packed ring.\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to map desc_packed ring.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn dev;\n \t\t}\n \n@@ -804,9 +812,8 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \t\t\t\t\tvq, addr->avail_user_addr, &len);\n \t\tif (vq->driver_event == NULL ||\n \t\t\t\tlen != sizeof(struct vring_packed_desc_event)) {\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"(%d) failed to find driver area address.\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to find driver area address.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn dev;\n \t\t}\n \n@@ -816,9 +823,8 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \t\t\t\t\tvq, addr->used_user_addr, &len);\n \t\tif (vq->device_event == NULL ||\n \t\t\t\tlen != sizeof(struct vring_packed_desc_event)) {\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"(%d) failed to find device area address.\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to find device area address.\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\treturn dev;\n \t\t}\n \n@@ -834,9 +840,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \tvq->desc = (struct vring_desc *)(uintptr_t)ring_addr_to_vva(dev,\n \t\t\tvq, addr->desc_user_addr, &len);\n \tif (vq->desc == 0 || len != sizeof(struct vring_desc) * vq->size) {\n-\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\"(%d) failed to map desc ring.\\n\",\n-\t\t\tdev->vid);\n+\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to map desc ring.\\n\", dev->ifname);\n \t\treturn dev;\n \t}\n \n@@ -851,9 +855,7 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \tvq->avail = (struct vring_avail *)(uintptr_t)ring_addr_to_vva(dev,\n \t\t\tvq, addr->avail_user_addr, &len);\n \tif (vq->avail == 0 || len != expected_len) {\n-\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\"(%d) failed to map avail ring.\\n\",\n-\t\t\tdev->vid);\n+\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to map avail ring.\\n\", dev->ifname);\n \t\treturn dev;\n \t}\n \n@@ -865,16 +867,15 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \tvq->used = (struct vring_used *)(uintptr_t)ring_addr_to_vva(dev,\n \t\t\tvq, addr->used_user_addr, &len);\n \tif (vq->used == 0 || len != expected_len) {\n-\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\"(%d) failed to map used ring.\\n\",\n-\t\t\tdev->vid);\n+\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) failed to map used ring.\\n\", dev->ifname);\n \t\treturn dev;\n \t}\n \n \tif (vq->last_used_idx != vq->used->idx) {\n \t\tVHOST_LOG_CONFIG(WARNING,\n-\t\t\t\"last_used_idx (%u) and vq->used->idx (%u) mismatches; \"\n+\t\t\t\"(%s) last_used_idx (%u) and vq->used->idx (%u) mismatches; \"\n \t\t\t\"some packets maybe resent for Tx and dropped for Rx\\n\",\n+\t\t\tdev->ifname,\n \t\t\tvq->last_used_idx, vq->used->idx);\n \t\tvq->last_used_idx  = vq->used->idx;\n \t\tvq->last_avail_idx = vq->used->idx;\n@@ -882,14 +883,11 @@ translate_ring_addresses(struct virtio_net *dev, int vq_index)\n \n \tvq->access_ok = true;\n \n-\tVHOST_LOG_CONFIG(DEBUG, \"(%d) mapped address desc: %p\\n\",\n-\t\t\tdev->vid, vq->desc);\n-\tVHOST_LOG_CONFIG(DEBUG, \"(%d) mapped address avail: %p\\n\",\n-\t\t\tdev->vid, vq->avail);\n-\tVHOST_LOG_CONFIG(DEBUG, \"(%d) mapped address used: %p\\n\",\n-\t\t\tdev->vid, vq->used);\n-\tVHOST_LOG_CONFIG(DEBUG, \"(%d) log_guest_addr: %\" PRIx64 \"\\n\",\n-\t\t\tdev->vid, vq->log_guest_addr);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) mapped address desc: %p\\n\", dev->ifname, vq->desc);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) mapped address avail: %p\\n\", dev->ifname, vq->avail);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) mapped address used: %p\\n\", dev->ifname, vq->used);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) log_guest_addr: %\" PRIx64 \"\\n\",\n+\t\t\tdev->ifname, vq->log_guest_addr);\n \n \treturn dev;\n }\n@@ -907,7 +905,7 @@ vhost_user_set_vring_addr(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tstruct vhost_vring_addr *addr = &msg->payload.addr;\n \tbool access_ok;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (dev->mem == NULL)\n@@ -951,7 +949,7 @@ vhost_user_set_vring_base(struct virtio_net **pdev,\n \tstruct vhost_virtqueue *vq = dev->virtqueue[msg->payload.state.index];\n \tuint64_t val = msg->payload.state.num;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (vq_is_packed(dev)) {\n@@ -990,7 +988,7 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,\n \t\t\t\t\tdev->max_guest_pages * sizeof(*page),\n \t\t\t\t\tRTE_CACHE_LINE_SIZE);\n \t\tif (dev->guest_pages == NULL) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"cannot realloc guest_pages\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) cannot realloc guest_pages\\n\", dev->ifname);\n \t\t\trte_free(old_pages);\n \t\t\treturn -1;\n \t\t}\n@@ -1069,11 +1067,11 @@ dump_guest_pages(struct virtio_net *dev)\n \t\tpage = &dev->guest_pages[i];\n \n \t\tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\"guest physical page region %u\\n\"\n+\t\t\t\"(%s) guest physical page region %u\\n\"\n \t\t\t\"\\t guest_phys_addr: %\" PRIx64 \"\\n\"\n \t\t\t\"\\t host_phys_addr : %\" PRIx64 \"\\n\"\n \t\t\t\"\\t size           : %\" PRIx64 \"\\n\",\n-\t\t\ti,\n+\t\t\tdev->ifname, i,\n \t\t\tpage->guest_phys_addr,\n \t\t\tpage->host_phys_addr,\n \t\t\tpage->size);\n@@ -1124,8 +1122,9 @@ vhost_user_postcopy_region_register(struct virtio_net *dev,\n \n \tif (ioctl(dev->postcopy_ufd, UFFDIO_REGISTER,\n \t\t\t\t&reg_struct)) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Failed to register ufd for region \"\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to register ufd for region \"\n \t\t\t\t\"%\" PRIx64 \" - %\" PRIx64 \" (ufd = %d) %s\\n\",\n+\t\t\t\tdev->ifname,\n \t\t\t\t(uint64_t)reg_struct.range.start,\n \t\t\t\t(uint64_t)reg_struct.range.start +\n \t\t\t\t(uint64_t)reg_struct.range.len - 1,\n@@ -1134,7 +1133,8 @@ vhost_user_postcopy_region_register(struct virtio_net *dev,\n \t\treturn -1;\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO, \"\\t userfaultfd registered for range : %\" PRIx64 \" - %\" PRIx64 \"\\n\",\n+\tVHOST_LOG_CONFIG(INFO, \"(%s)\\t userfaultfd registered for range : %\" PRIx64 \" - %\" PRIx64 \"\\n\",\n+\t\t\tdev->ifname,\n \t\t\t(uint64_t)reg_struct.range.start,\n \t\t\t(uint64_t)reg_struct.range.start +\n \t\t\t(uint64_t)reg_struct.range.len - 1);\n@@ -1180,19 +1180,18 @@ vhost_user_postcopy_register(struct virtio_net *dev, int main_fd,\n \t/* Wait for qemu to acknolwedge it's got the addresses\n \t * we've got to wait before we're allowed to generate faults.\n \t */\n-\tif (read_vhost_message(main_fd, &ack_msg) <= 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Failed to read qemu ack on postcopy set-mem-table\\n\");\n+\tif (read_vhost_message(dev, main_fd, &ack_msg) <= 0) {\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to read qemu ack on postcopy set-mem-table\\n\",\n+\t\t\t\tdev->ifname);\n \t\treturn -1;\n \t}\n \n-\tif (validate_msg_fds(&ack_msg, 0) != 0)\n+\tif (validate_msg_fds(dev, &ack_msg, 0) != 0)\n \t\treturn -1;\n \n \tif (ack_msg.request.master != VHOST_USER_SET_MEM_TABLE) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Bad qemu ack on postcopy set-mem-table (%d)\\n\",\n-\t\t\t\tack_msg.request.master);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) bad qemu ack on postcopy set-mem-table (%d)\\n\",\n+\t\t\t\tdev->ifname, ack_msg.request.master);\n \t\treturn -1;\n \t}\n \n@@ -1219,10 +1218,9 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \n \t/* Check for memory_size + mmap_offset overflow */\n \tif (mmap_offset >= -region->size) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"mmap_offset (%#\"PRIx64\") and memory_size \"\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) mmap_offset (%#\"PRIx64\") and memory_size \"\n \t\t\t\t\"(%#\"PRIx64\") overflow\\n\",\n-\t\t\t\tmmap_offset, region->size);\n+\t\t\t\tdev->ifname, mmap_offset, region->size);\n \t\treturn -1;\n \t}\n \n@@ -1236,8 +1234,8 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \t */\n \talignment = get_blk_size(region->fd);\n \tif (alignment == (uint64_t)-1) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"couldn't get hugepage size through fstat\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) couldn't get hugepage size through fstat\\n\",\n+\t\t\t\tdev->ifname);\n \t\treturn -1;\n \t}\n \tmmap_size = RTE_ALIGN_CEIL(mmap_size, alignment);\n@@ -1250,9 +1248,9 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \t\t * mmap() kernel implementation would return an error, but\n \t\t * better catch it before and provide useful info in the logs.\n \t\t */\n-\t\tVHOST_LOG_CONFIG(ERR, \"mmap size (0x%\" PRIx64 \") \"\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) mmap size (0x%\" PRIx64 \") \"\n \t\t\t\t\"or alignment (0x%\" PRIx64 \") is invalid\\n\",\n-\t\t\t\tregion->size + mmap_offset, alignment);\n+\t\t\t\tdev->ifname, region->size + mmap_offset, alignment);\n \t\treturn -1;\n \t}\n \n@@ -1261,7 +1259,7 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \t\t\tMAP_SHARED | populate, region->fd, 0);\n \n \tif (mmap_addr == MAP_FAILED) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"mmap failed (%s).\\n\", strerror(errno));\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) mmap failed (%s).\\n\", dev->ifname, strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -1271,21 +1269,24 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \n \tif (dev->async_copy) {\n \t\tif (add_guest_pages(dev, region, alignment) < 0) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"adding guest pages to region failed.\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) adding guest pages to region failed.\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn -1;\n \t\t}\n \n \t\tif (rte_vfio_is_enabled(\"vfio\")) {\n-\t\t\tret = async_dma_map(region, true);\n+\t\t\tret = async_dma_map(dev, region, true);\n \t\t\tif (ret) {\n-\t\t\t\tVHOST_LOG_CONFIG(ERR, \"Configure IOMMU for DMA engine failed\\n\");\n+\t\t\t\tVHOST_LOG_CONFIG(ERR,\n+\t\t\t\t\t\"(%s) configure IOMMU for DMA engine failed\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\t\treturn -1;\n \t\t\t}\n \t\t}\n \t}\n \n \tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\"guest memory region size: 0x%\" PRIx64 \"\\n\"\n+\t\t\t\"(%s) guest memory region size: 0x%\" PRIx64 \"\\n\"\n \t\t\t\"\\t guest physical addr: 0x%\" PRIx64 \"\\n\"\n \t\t\t\"\\t guest virtual  addr: 0x%\" PRIx64 \"\\n\"\n \t\t\t\"\\t host  virtual  addr: 0x%\" PRIx64 \"\\n\"\n@@ -1293,6 +1294,7 @@ vhost_user_mmap_region(struct virtio_net *dev,\n \t\t\t\"\\t mmap size : 0x%\" PRIx64 \"\\n\"\n \t\t\t\"\\t mmap align: 0x%\" PRIx64 \"\\n\"\n \t\t\t\"\\t mmap off  : 0x%\" PRIx64 \"\\n\",\n+\t\t\tdev->ifname,\n \t\t\tregion->size,\n \t\t\tregion->guest_phys_addr,\n \t\t\tregion->guest_user_addr,\n@@ -1317,18 +1319,17 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tuint32_t i;\n \tbool async_notify = false;\n \n-\tif (validate_msg_fds(msg, memory->nregions) != 0)\n+\tif (validate_msg_fds(dev, msg, memory->nregions) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (memory->nregions > VHOST_MEMORY_MAX_NREGIONS) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"too many memory regions (%u)\\n\", memory->nregions);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) too many memory regions (%u)\\n\",\n+\t\t\t\tdev->ifname, memory->nregions);\n \t\tgoto close_msg_fds;\n \t}\n \n \tif (dev->mem && !vhost_memory_changed(memory, dev->mem)) {\n-\t\tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\"(%d) memory regions not changed\\n\", dev->vid);\n+\t\tVHOST_LOG_CONFIG(INFO, \"(%s) memory regions not changed\\n\", dev->ifname);\n \n \t\tclose_msg_fds(msg);\n \n@@ -1380,9 +1381,8 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t\t\t\tnuma_node);\n \t\tif (dev->guest_pages == NULL) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"(%d) failed to allocate memory \"\n-\t\t\t\t\"for dev->guest_pages\\n\",\n-\t\t\t\tdev->vid);\n+\t\t\t\t\"(%s) failed to allocate memory for dev->guest_pages\\n\",\n+\t\t\t\tdev->ifname);\n \t\t\tgoto close_msg_fds;\n \t\t}\n \t}\n@@ -1391,8 +1391,8 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tsizeof(struct rte_vhost_mem_region) * memory->nregions, 0, numa_node);\n \tif (dev->mem == NULL) {\n \t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"(%d) failed to allocate memory for dev->mem\\n\",\n-\t\t\tdev->vid);\n+\t\t\t\"(%s) failed to allocate memory for dev->mem\\n\",\n+\t\t\tdev->ifname);\n \t\tgoto free_guest_pages;\n \t}\n \n@@ -1413,7 +1413,7 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tmmap_offset = memory->regions[i].mmap_offset;\n \n \t\tif (vhost_user_mmap_region(dev, reg, mmap_offset) < 0) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to mmap region %u\\n\", i);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to mmap region %u\\n\", dev->ifname, i);\n \t\t\tgoto free_mem_table;\n \t\t}\n \n@@ -1525,13 +1525,12 @@ virtio_is_ready(struct virtio_net *dev)\n \tdev->flags |= VIRTIO_DEV_READY;\n \n \tif (!(dev->flags & VIRTIO_DEV_RUNNING))\n-\t\tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\"virtio is now ready for processing.\\n\");\n+\t\tVHOST_LOG_CONFIG(INFO, \"(%s) virtio is now ready for processing.\\n\", dev->ifname);\n \treturn 1;\n }\n \n static void *\n-inflight_mem_alloc(const char *name, size_t size, int *fd)\n+inflight_mem_alloc(struct virtio_net *dev, const char *name, size_t size, int *fd)\n {\n \tvoid *ptr;\n \tint mfd = -1;\n@@ -1546,8 +1545,8 @@ inflight_mem_alloc(const char *name, size_t size, int *fd)\n \tif (mfd == -1) {\n \t\tmfd = mkstemp(fname);\n \t\tif (mfd == -1) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to get inflight buffer fd\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to get inflight buffer fd\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn NULL;\n \t\t}\n \n@@ -1555,16 +1554,14 @@ inflight_mem_alloc(const char *name, size_t size, int *fd)\n \t}\n \n \tif (ftruncate(mfd, size) == -1) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"failed to alloc inflight buffer\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to alloc inflight buffer\\n\", dev->ifname);\n \t\tclose(mfd);\n \t\treturn NULL;\n \t}\n \n \tptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);\n \tif (ptr == MAP_FAILED) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"failed to mmap inflight buffer\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to mmap inflight buffer\\n\", dev->ifname);\n \t\tclose(mfd);\n \t\treturn NULL;\n \t}\n@@ -1604,9 +1601,8 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev,\n \tvoid *addr;\n \n \tif (msg->size != sizeof(msg->payload.inflight)) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"invalid get_inflight_fd message size is %d\\n\",\n-\t\t\tmsg->size);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid get_inflight_fd message size is %d\\n\",\n+\t\t\tdev->ifname, msg->size);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -1621,8 +1617,8 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev,\n \t\tdev->inflight_info = rte_zmalloc_socket(\"inflight_info\",\n \t\t\t\tsizeof(struct inflight_mem_info), 0, numa_node);\n \t\tif (!dev->inflight_info) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to alloc dev inflight area\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to alloc dev inflight area\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t\tdev->inflight_info->fd = -1;\n@@ -1631,10 +1627,10 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev,\n \tnum_queues = msg->payload.inflight.num_queues;\n \tqueue_size = msg->payload.inflight.queue_size;\n \n-\tVHOST_LOG_CONFIG(INFO, \"get_inflight_fd num_queues: %u\\n\",\n-\t\tmsg->payload.inflight.num_queues);\n-\tVHOST_LOG_CONFIG(INFO, \"get_inflight_fd queue_size: %u\\n\",\n-\t\tmsg->payload.inflight.queue_size);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) get_inflight_fd num_queues: %u\\n\",\n+\t\tdev->ifname, msg->payload.inflight.num_queues);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) get_inflight_fd queue_size: %u\\n\",\n+\t\tdev->ifname, msg->payload.inflight.queue_size);\n \n \tif (vq_is_packed(dev))\n \t\tpervq_inflight_size = get_pervq_shm_size_packed(queue_size);\n@@ -1642,10 +1638,9 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev,\n \t\tpervq_inflight_size = get_pervq_shm_size_split(queue_size);\n \n \tmmap_size = num_queues * pervq_inflight_size;\n-\taddr = inflight_mem_alloc(\"vhost-inflight\", mmap_size, &fd);\n+\taddr = inflight_mem_alloc(dev, \"vhost-inflight\", mmap_size, &fd);\n \tif (!addr) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"failed to alloc vhost inflight area\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to alloc vhost inflight area\\n\", dev->ifname);\n \t\t\tmsg->payload.inflight.mmap_size = 0;\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n@@ -1679,14 +1674,11 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev,\n \t\t}\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"send inflight mmap_size: %\"PRIu64\"\\n\",\n-\t\tmsg->payload.inflight.mmap_size);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"send inflight mmap_offset: %\"PRIu64\"\\n\",\n-\t\tmsg->payload.inflight.mmap_offset);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"send inflight fd: %d\\n\", msg->fds[0]);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) send inflight mmap_size: %\"PRIu64\"\\n\",\n+\t\t\tdev->ifname, msg->payload.inflight.mmap_size);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) send inflight mmap_offset: %\"PRIu64\"\\n\",\n+\t\t\tdev->ifname, msg->payload.inflight.mmap_offset);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) send inflight fd: %d\\n\", dev->ifname, msg->fds[0]);\n \n \treturn RTE_VHOST_MSG_RESULT_REPLY;\n }\n@@ -1706,9 +1698,8 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg,\n \n \tfd = msg->fds[0];\n \tif (msg->size != sizeof(msg->payload.inflight) || fd < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"invalid set_inflight_fd message size is %d,fd is %d\\n\",\n-\t\t\tmsg->size, fd);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid set_inflight_fd message size is %d,fd is %d\\n\",\n+\t\t\tdev->ifname, msg->size, fd);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -1722,19 +1713,15 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg,\n \telse\n \t\tpervq_inflight_size = get_pervq_shm_size_split(queue_size);\n \n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd mmap_size: %\"PRIu64\"\\n\", mmap_size);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd mmap_offset: %\"PRIu64\"\\n\", mmap_offset);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd num_queues: %u\\n\", num_queues);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd queue_size: %u\\n\", queue_size);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd fd: %d\\n\", fd);\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set_inflight_fd pervq_inflight_size: %d\\n\",\n-\t\tpervq_inflight_size);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd mmap_size: %\"PRIu64\"\\n\",\n+\t\t\tdev->ifname, mmap_size);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd mmap_offset: %\"PRIu64\"\\n\",\n+\t\t\tdev->ifname, mmap_offset);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd num_queues: %u\\n\", dev->ifname, num_queues);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd queue_size: %u\\n\", dev->ifname, queue_size);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd fd: %d\\n\", dev->ifname, fd);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set_inflight_fd pervq_inflight_size: %d\\n\",\n+\t\t\tdev->ifname, pervq_inflight_size);\n \n \t/*\n \t * If VQ 0 has already been allocated, try to allocate on the same\n@@ -1747,8 +1734,8 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg,\n \t\tdev->inflight_info = rte_zmalloc_socket(\"inflight_info\",\n \t\t\t\tsizeof(struct inflight_mem_info), 0, numa_node);\n \t\tif (dev->inflight_info == NULL) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to alloc dev inflight area\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to alloc dev inflight area\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t\tdev->inflight_info->fd = -1;\n@@ -1762,7 +1749,7 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg,\n \taddr = mmap(0, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED,\n \t\t    fd, mmap_offset);\n \tif (addr == MAP_FAILED) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"failed to mmap share memory.\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to mmap share memory.\\n\", dev->ifname);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -1803,7 +1790,7 @@ vhost_user_set_vring_call(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tint expected_fds;\n \n \texpected_fds = (msg->payload.u64 & VHOST_USER_VRING_NOFD_MASK) ? 0 : 1;\n-\tif (validate_msg_fds(msg, expected_fds) != 0)\n+\tif (validate_msg_fds(dev, msg, expected_fds) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tfile.index = msg->payload.u64 & VHOST_USER_VRING_IDX_MASK;\n@@ -1811,8 +1798,8 @@ vhost_user_set_vring_call(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tfile.fd = VIRTIO_INVALID_EVENTFD;\n \telse\n \t\tfile.fd = msg->fds[0];\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"vring call idx:%d file:%d\\n\", file.index, file.fd);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) vring call idx:%d file:%d\\n\",\n+\t\t\tdev->ifname, file.index, file.fd);\n \n \tvq = dev->virtqueue[file.index];\n \n@@ -1829,19 +1816,20 @@ vhost_user_set_vring_call(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \treturn RTE_VHOST_MSG_RESULT_OK;\n }\n \n-static int vhost_user_set_vring_err(struct virtio_net **pdev __rte_unused,\n+static int vhost_user_set_vring_err(struct virtio_net **pdev,\n \t\t\tstruct VhostUserMsg *msg,\n \t\t\tint main_fd __rte_unused)\n {\n+\tstruct virtio_net *dev = *pdev;\n \tint expected_fds;\n \n \texpected_fds = (msg->payload.u64 & VHOST_USER_VRING_NOFD_MASK) ? 0 : 1;\n-\tif (validate_msg_fds(msg, expected_fds) != 0)\n+\tif (validate_msg_fds(dev, msg, expected_fds) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (!(msg->payload.u64 & VHOST_USER_VRING_NOFD_MASK))\n \t\tclose(msg->fds[0]);\n-\tVHOST_LOG_CONFIG(INFO, \"not implemented\\n\");\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) not implemented\\n\", dev->ifname);\n \n \treturn RTE_VHOST_MSG_RESULT_OK;\n }\n@@ -1908,7 +1896,8 @@ vhost_check_queue_inflights_split(struct virtio_net *dev,\n \t\t\t\t0, vq->numa_node);\n \t\tif (!resubmit) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to allocate memory for resubmit info.\\n\");\n+\t\t\t\t\t\"(%s) failed to allocate memory for resubmit info.\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \n@@ -1917,7 +1906,8 @@ vhost_check_queue_inflights_split(struct virtio_net *dev,\n \t\t\t\t0, vq->numa_node);\n \t\tif (!resubmit->resubmit_list) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to allocate memory for inflight desc.\\n\");\n+\t\t\t\t\t\"(%s) failed to allocate memory for inflight desc.\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\trte_free(resubmit);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n@@ -2004,7 +1994,8 @@ vhost_check_queue_inflights_packed(struct virtio_net *dev,\n \t\t\t\t0, vq->numa_node);\n \t\tif (resubmit == NULL) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to allocate memory for resubmit info.\\n\");\n+\t\t\t\t\t\"(%s) failed to allocate memory for resubmit info.\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \n@@ -2013,7 +2004,8 @@ vhost_check_queue_inflights_packed(struct virtio_net *dev,\n \t\t\t\t0, vq->numa_node);\n \t\tif (resubmit->resubmit_list == NULL) {\n \t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to allocate memory for resubmit desc.\\n\");\n+\t\t\t\t\t\"(%s) failed to allocate memory for resubmit desc.\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\t\trte_free(resubmit);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n@@ -2051,7 +2043,7 @@ vhost_user_set_vring_kick(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tint expected_fds;\n \n \texpected_fds = (msg->payload.u64 & VHOST_USER_VRING_NOFD_MASK) ? 0 : 1;\n-\tif (validate_msg_fds(msg, expected_fds) != 0)\n+\tif (validate_msg_fds(dev, msg, expected_fds) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tfile.index = msg->payload.u64 & VHOST_USER_VRING_IDX_MASK;\n@@ -2059,8 +2051,8 @@ vhost_user_set_vring_kick(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tfile.fd = VIRTIO_INVALID_EVENTFD;\n \telse\n \t\tfile.fd = msg->fds[0];\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"vring kick idx:%d file:%d\\n\", file.index, file.fd);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) vring kick idx:%d file:%d\\n\",\n+\t\t\tdev->ifname, file.index, file.fd);\n \n \t/* Interpret ring addresses only when ring is started. */\n \tdev = translate_ring_addresses(dev, file.index);\n@@ -2095,14 +2087,14 @@ vhost_user_set_vring_kick(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \n \tif (vq_is_packed(dev)) {\n \t\tif (vhost_check_queue_inflights_packed(dev, vq)) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to inflights for vq: %d\\n\", file.index);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to inflights for vq: %d\\n\",\n+\t\t\t\t\tdev->ifname, file.index);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t} else {\n \t\tif (vhost_check_queue_inflights_split(dev, vq)) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to inflights for vq: %d\\n\", file.index);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to inflights for vq: %d\\n\",\n+\t\t\t\t\tdev->ifname, file.index);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t}\n@@ -2122,7 +2114,7 @@ vhost_user_get_vring_base(struct virtio_net **pdev,\n \tstruct vhost_virtqueue *vq = dev->virtqueue[msg->payload.state.index];\n \tuint64_t val;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \t/* We have to stop the queue (virtio) if it is running. */\n@@ -2144,9 +2136,9 @@ vhost_user_get_vring_base(struct virtio_net **pdev,\n \t\tmsg->payload.state.num = vq->last_avail_idx;\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"vring base idx:%d file:%d\\n\", msg->payload.state.index,\n-\t\tmsg->payload.state.num);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) vring base idx:%d file:%d\\n\",\n+\t\t\tdev->ifname, msg->payload.state.index,\n+\t\t\tmsg->payload.state.num);\n \t/*\n \t * Based on current qemu vhost-user implementation, this message is\n \t * sent and only sent in vhost_vring_stop.\n@@ -2201,17 +2193,17 @@ vhost_user_set_vring_enable(struct virtio_net **pdev,\n \tbool enable = !!msg->payload.state.num;\n \tint index = (int)msg->payload.state.index;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"set queue enable: %d to qp idx: %d\\n\",\n-\t\tenable, index);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) set queue enable: %d to qp idx: %d\\n\",\n+\t\t\tdev->ifname, enable, index);\n \n \tif (enable && dev->virtqueue[index]->async) {\n \t\tif (dev->virtqueue[index]->async->pkts_inflight_n) {\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"failed to enable vring. \"\n-\t\t\t\"async inflight packets must be completed first\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to enable vring. \"\n+\t\t\t\"async inflight packets must be completed first\\n\",\n+\t\t\tdev->ifname);\n \t\t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t\t}\n \t}\n@@ -2229,7 +2221,7 @@ vhost_user_get_protocol_features(struct virtio_net **pdev,\n \tstruct virtio_net *dev = *pdev;\n \tuint64_t features, protocol_features;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \trte_vhost_driver_get_features(dev->ifname, &features);\n@@ -2251,22 +2243,19 @@ vhost_user_set_protocol_features(struct virtio_net **pdev,\n \tuint64_t protocol_features = msg->payload.u64;\n \tuint64_t slave_protocol_features = 0;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \trte_vhost_driver_get_protocol_features(dev->ifname,\n \t\t\t&slave_protocol_features);\n \tif (protocol_features & ~slave_protocol_features) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"(%d) received invalid protocol features.\\n\",\n-\t\t\tdev->vid);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) received invalid protocol features.\\n\", dev->ifname);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n \tdev->protocol_features = protocol_features;\n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"negotiated Vhost-user protocol features: 0x%\" PRIx64 \"\\n\",\n-\t\tdev->protocol_features);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) negotiated Vhost-user protocol features: 0x%\" PRIx64 \"\\n\",\n+\t\tdev->ifname, dev->protocol_features);\n \n \treturn RTE_VHOST_MSG_RESULT_OK;\n }\n@@ -2281,18 +2270,17 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tvoid *addr;\n \tuint32_t i;\n \n-\tif (validate_msg_fds(msg, 1) != 0)\n+\tif (validate_msg_fds(dev, msg, 1) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (fd < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"invalid log fd: %d\\n\", fd);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid log fd: %d\\n\", dev->ifname, fd);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n \tif (msg->size != sizeof(VhostUserLog)) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"invalid log base msg size: %\"PRId32\" != %d\\n\",\n-\t\t\tmsg->size, (int)sizeof(VhostUserLog));\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid log base msg size: %\"PRId32\" != %d\\n\",\n+\t\t\tdev->ifname, msg->size, (int)sizeof(VhostUserLog));\n \t\tgoto close_msg_fds;\n \t}\n \n@@ -2302,14 +2290,13 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t/* Check for mmap size and offset overflow. */\n \tif (off >= -size) {\n \t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"log offset %#\"PRIx64\" and log size %#\"PRIx64\" overflow\\n\",\n-\t\t\toff, size);\n+\t\t\t\t\"(%s) log offset %#\"PRIx64\" and log size %#\"PRIx64\" overflow\\n\",\n+\t\t\t\tdev->ifname, off, size);\n \t\tgoto close_msg_fds;\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO,\n-\t\t\"log mmap size: %\"PRId64\", offset: %\"PRId64\"\\n\",\n-\t\tsize, off);\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) log mmap size: %\"PRId64\", offset: %\"PRId64\"\\n\",\n+\t\t\tdev->ifname, size, off);\n \n \t/*\n \t * mmap from 0 to workaround a hugepage mmap bug: mmap will\n@@ -2318,7 +2305,7 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \taddr = mmap(0, size + off, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);\n \tclose(fd);\n \tif (addr == MAP_FAILED) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"mmap log base failed!\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) mmap log base failed!\\n\", dev->ifname);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -2347,7 +2334,8 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t * caching will be done, which will impact performance\n \t\t */\n \t\tif (!vq->log_cache)\n-\t\t\tVHOST_LOG_CONFIG(ERR, \"Failed to allocate VQ logging cache\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to allocate VQ logging cache\\n\",\n+\t\t\t\t\tdev->ifname);\n \t}\n \n \t/*\n@@ -2364,15 +2352,17 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \treturn RTE_VHOST_MSG_RESULT_ERR;\n }\n \n-static int vhost_user_set_log_fd(struct virtio_net **pdev __rte_unused,\n+static int vhost_user_set_log_fd(struct virtio_net **pdev,\n \t\t\tstruct VhostUserMsg *msg,\n \t\t\tint main_fd __rte_unused)\n {\n-\tif (validate_msg_fds(msg, 1) != 0)\n+\tstruct virtio_net *dev = *pdev;\n+\n+\tif (validate_msg_fds(dev, msg, 1) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tclose(msg->fds[0]);\n-\tVHOST_LOG_CONFIG(INFO, \"not implemented.\\n\");\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) not implemented.\\n\", dev->ifname);\n \n \treturn RTE_VHOST_MSG_RESULT_OK;\n }\n@@ -2393,12 +2383,11 @@ vhost_user_send_rarp(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tuint8_t *mac = (uint8_t *)&msg->payload.u64;\n \tstruct rte_vdpa_device *vdpa_dev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n-\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\":: mac: \" RTE_ETHER_ADDR_PRT_FMT \"\\n\",\n-\t\tmac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);\n+\tVHOST_LOG_CONFIG(DEBUG, \"(%s) MAC: \" RTE_ETHER_ADDR_PRT_FMT \"\\n\",\n+\t\tdev->ifname, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);\n \tmemcpy(dev->mac.addr_bytes, mac, 6);\n \n \t/*\n@@ -2422,13 +2411,13 @@ vhost_user_net_set_mtu(struct virtio_net **pdev, struct VhostUserMsg *msg,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (msg->payload.u64 < VIRTIO_MIN_MTU ||\n \t\t\tmsg->payload.u64 > VIRTIO_MAX_MTU) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Invalid MTU size (%\"PRIu64\")\\n\",\n-\t\t\t\tmsg->payload.u64);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid MTU size (%\"PRIu64\")\\n\",\n+\t\t\t\tdev->ifname, msg->payload.u64);\n \n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n@@ -2445,13 +2434,12 @@ vhost_user_set_req_fd(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tstruct virtio_net *dev = *pdev;\n \tint fd = msg->fds[0];\n \n-\tif (validate_msg_fds(msg, 1) != 0)\n+\tif (validate_msg_fds(dev, msg, 1) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (fd < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Invalid file descriptor for slave channel (%d)\\n\",\n-\t\t\t\tfd);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid file descriptor for slave channel (%d)\\n\",\n+\t\t\t\tdev->ifname, fd);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -2547,7 +2535,7 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tuint16_t i;\n \tuint64_t vva, len;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tswitch (imsg->type) {\n@@ -2585,8 +2573,8 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t}\n \t\tbreak;\n \tdefault:\n-\t\tVHOST_LOG_CONFIG(ERR, \"Invalid IOTLB message type (%d)\\n\",\n-\t\t\t\timsg->type);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid IOTLB message type (%d)\\n\",\n+\t\t\t\tdev->ifname, imsg->type);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -2602,21 +2590,21 @@ vhost_user_set_postcopy_advise(struct virtio_net **pdev,\n #ifdef RTE_LIBRTE_VHOST_POSTCOPY\n \tstruct uffdio_api api_struct;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tdev->postcopy_ufd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK);\n \n \tif (dev->postcopy_ufd == -1) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Userfaultfd not available: %s\\n\",\n-\t\t\tstrerror(errno));\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) userfaultfd not available: %s\\n\",\n+\t\t\tdev->ifname, strerror(errno));\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \tapi_struct.api = UFFD_API;\n \tapi_struct.features = 0;\n \tif (ioctl(dev->postcopy_ufd, UFFDIO_API, &api_struct)) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"UFFDIO_API ioctl failure: %s\\n\",\n-\t\t\tstrerror(errno));\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) UFFDIO_API ioctl failure: %s\\n\",\n+\t\t\tdev->ifname, strerror(errno));\n \t\tclose(dev->postcopy_ufd);\n \t\tdev->postcopy_ufd = -1;\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n@@ -2640,12 +2628,12 @@ vhost_user_set_postcopy_listen(struct virtio_net **pdev,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tif (dev->mem && dev->mem->nregions) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"Regions already registered at postcopy-listen\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) regions already registered at postcopy-listen\\n\",\n+\t\t\t\tdev->ifname);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \tdev->postcopy_listening = 1;\n@@ -2659,7 +2647,7 @@ vhost_user_postcopy_end(struct virtio_net **pdev, struct VhostUserMsg *msg,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tdev->postcopy_listening = 0;\n@@ -2681,7 +2669,7 @@ vhost_user_get_status(struct virtio_net **pdev, struct VhostUserMsg *msg,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \tmsg->payload.u64 = dev->status;\n@@ -2697,13 +2685,13 @@ vhost_user_set_status(struct virtio_net **pdev, struct VhostUserMsg *msg,\n {\n \tstruct virtio_net *dev = *pdev;\n \n-\tif (validate_msg_fds(msg, 0) != 0)\n+\tif (validate_msg_fds(dev, msg, 0) != 0)\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \n \t/* As per Virtio specification, the device status is 8bits long */\n \tif (msg->payload.u64 > UINT8_MAX) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Invalid VHOST_USER_SET_STATUS payload 0x%\" PRIx64 \"\\n\",\n-\t\t\t\tmsg->payload.u64);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid VHOST_USER_SET_STATUS payload 0x%\" PRIx64 \"\\n\",\n+\t\t\t\tdev->ifname, msg->payload.u64);\n \t\treturn RTE_VHOST_MSG_RESULT_ERR;\n \t}\n \n@@ -2711,7 +2699,9 @@ vhost_user_set_status(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \n \tif ((dev->status & VIRTIO_DEVICE_STATUS_FEATURES_OK) &&\n \t    (dev->flags & VIRTIO_DEV_FEATURES_FAILED)) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"FEATURES_OK bit is set but feature negotiation failed\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR,\n+\t\t\t\t\"(%s) FEATURES_OK bit is set but feature negotiation failed\\n\",\n+\t\t\t\tdev->ifname);\n \t\t/*\n \t\t * Clear the bit to let the driver know about the feature\n \t\t * negotiation failure\n@@ -2719,7 +2709,7 @@ vhost_user_set_status(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tdev->status &= ~VIRTIO_DEVICE_STATUS_FEATURES_OK;\n \t}\n \n-\tVHOST_LOG_CONFIG(INFO, \"New device status(0x%08x):\\n\"\n+\tVHOST_LOG_CONFIG(INFO, \"(%s) new device status(0x%08x):\\n\"\n \t\t\t\"\\t-RESET: %u\\n\"\n \t\t\t\"\\t-ACKNOWLEDGE: %u\\n\"\n \t\t\t\"\\t-DRIVER: %u\\n\"\n@@ -2727,6 +2717,7 @@ vhost_user_set_status(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t\t\"\\t-DRIVER_OK: %u\\n\"\n \t\t\t\"\\t-DEVICE_NEED_RESET: %u\\n\"\n \t\t\t\"\\t-FAILED: %u\\n\",\n+\t\t\tdev->ifname,\n \t\t\tdev->status,\n \t\t\t(dev->status == VIRTIO_DEVICE_STATUS_RESET),\n \t\t\t!!(dev->status & VIRTIO_DEVICE_STATUS_ACK),\n@@ -2777,7 +2768,7 @@ static vhost_message_handler_t vhost_message_handlers[VHOST_USER_MAX] = {\n \n /* return bytes# of read on success or negative val on failure. */\n static int\n-read_vhost_message(int sockfd, struct VhostUserMsg *msg)\n+read_vhost_message(struct virtio_net *dev, int sockfd, struct VhostUserMsg *msg)\n {\n \tint ret;\n \n@@ -2786,23 +2777,22 @@ read_vhost_message(int sockfd, struct VhostUserMsg *msg)\n \tif (ret <= 0) {\n \t\treturn ret;\n \t} else if (ret != VHOST_USER_HDR_SIZE) {\n-\t\tVHOST_LOG_CONFIG(ERR, \"Unexpected header size read\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) Unexpected header size read\\n\", dev->ifname);\n \t\tclose_msg_fds(msg);\n \t\treturn -1;\n \t}\n \n \tif (msg->size) {\n \t\tif (msg->size > sizeof(msg->payload)) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"invalid msg size: %d\\n\", msg->size);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid msg size: %d\\n\",\n+\t\t\t\t\tdev->ifname, msg->size);\n \t\t\treturn -1;\n \t\t}\n \t\tret = read(sockfd, &msg->payload, msg->size);\n \t\tif (ret <= 0)\n \t\t\treturn ret;\n \t\tif (ret != (int)msg->size) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"read control message failed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) read control message failed\\n\", dev->ifname);\n \t\t\treturn -1;\n \t\t}\n \t}\n@@ -2878,8 +2868,7 @@ vhost_user_check_and_alloc_queue_pair(struct virtio_net *dev,\n \t}\n \n \tif (vring_idx >= VHOST_MAX_VRING) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"invalid vring index: %u\\n\", vring_idx);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) invalid vring index: %u\\n\", dev->ifname, vring_idx);\n \t\treturn -1;\n \t}\n \n@@ -2942,21 +2931,18 @@ vhost_user_msg_handler(int vid, int fd)\n \tif (!dev->notify_ops) {\n \t\tdev->notify_ops = vhost_driver_callback_get(dev->ifname);\n \t\tif (!dev->notify_ops) {\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"failed to get callback ops for driver %s\\n\",\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to get callback ops for driver\\n\",\n \t\t\t\tdev->ifname);\n \t\t\treturn -1;\n \t\t}\n \t}\n \n-\tret = read_vhost_message(fd, &msg);\n+\tret = read_vhost_message(dev, fd, &msg);\n \tif (ret <= 0) {\n \t\tif (ret < 0)\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"vhost read message failed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) vhost read message failed\\n\", dev->ifname);\n \t\telse\n-\t\t\tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\t\"vhost peer closed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(INFO, \"(%s) vhost peer closed\\n\", dev->ifname);\n \n \t\treturn -1;\n \t}\n@@ -2966,19 +2952,18 @@ vhost_user_msg_handler(int vid, int fd)\n \tif (request > VHOST_USER_NONE && request < VHOST_USER_MAX &&\n \t\t\tvhost_message_str[request]) {\n \t\tif (request != VHOST_USER_IOTLB_MSG)\n-\t\t\tVHOST_LOG_CONFIG(INFO, \"read message %s\\n\",\n-\t\t\t\tvhost_message_str[request]);\n+\t\t\tVHOST_LOG_CONFIG(INFO, \"(%s) read message %s\\n\",\n+\t\t\t\tdev->ifname, vhost_message_str[request]);\n \t\telse\n-\t\t\tVHOST_LOG_CONFIG(DEBUG, \"read message %s\\n\",\n-\t\t\t\tvhost_message_str[request]);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) read message %s\\n\",\n+\t\t\t\tdev->ifname, vhost_message_str[request]);\n \t} else {\n-\t\tVHOST_LOG_CONFIG(DEBUG, \"External request %d\\n\", request);\n+\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) external request %d\\n\", dev->ifname, request);\n \t}\n \n \tret = vhost_user_check_and_alloc_queue_pair(dev, &msg);\n \tif (ret < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"failed to alloc queue\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to alloc queue\\n\", dev->ifname);\n \t\treturn -1;\n \t}\n \n@@ -3041,21 +3026,18 @@ vhost_user_msg_handler(int vid, int fd)\n \n \t\tswitch (ret) {\n \t\tcase RTE_VHOST_MSG_RESULT_ERR:\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Processing %s failed.\\n\",\n-\t\t\t\tvhost_message_str[request]);\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) processing %s failed.\\n\",\n+\t\t\t\t\tdev->ifname, vhost_message_str[request]);\n \t\t\thandled = true;\n \t\t\tbreak;\n \t\tcase RTE_VHOST_MSG_RESULT_OK:\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"Processing %s succeeded.\\n\",\n-\t\t\t\tvhost_message_str[request]);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) processing %s succeeded.\\n\",\n+\t\t\t\t\tdev->ifname, vhost_message_str[request]);\n \t\t\thandled = true;\n \t\t\tbreak;\n \t\tcase RTE_VHOST_MSG_RESULT_REPLY:\n-\t\t\tVHOST_LOG_CONFIG(DEBUG,\n-\t\t\t\t\"Processing %s succeeded and needs reply.\\n\",\n-\t\t\t\tvhost_message_str[request]);\n+\t\t\tVHOST_LOG_CONFIG(DEBUG, \"(%s) processing %s succeeded and needs reply.\\n\",\n+\t\t\t\t\tdev->ifname, vhost_message_str[request]);\n \t\t\tsend_vhost_reply(fd, &msg);\n \t\t\thandled = true;\n \t\t\tbreak;\n@@ -3084,8 +3066,8 @@ vhost_user_msg_handler(int vid, int fd)\n \n \t/* If message was not handled at this stage, treat it as an error */\n \tif (!handled) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"vhost message (req: %d) was not handled.\\n\", request);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) vhost message (req: %d) was not handled.\\n\",\n+\t\t\t\tdev->ifname, request);\n \t\tclose_msg_fds(&msg);\n \t\tret = RTE_VHOST_MSG_RESULT_ERR;\n \t}\n@@ -3101,8 +3083,7 @@ vhost_user_msg_handler(int vid, int fd)\n \t\tmsg.fd_num = 0;\n \t\tsend_vhost_reply(fd, &msg);\n \t} else if (ret == RTE_VHOST_MSG_RESULT_ERR) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"vhost message handling failed.\\n\");\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) vhost message handling failed.\\n\", dev->ifname);\n \t\treturn -1;\n \t}\n \n@@ -3139,8 +3120,8 @@ vhost_user_msg_handler(int vid, int fd)\n \n \tif (!(dev->flags & VIRTIO_DEV_VDPA_CONFIGURED)) {\n \t\tif (vdpa_dev->ops->dev_conf(dev->vid))\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\t \"Failed to configure vDPA device\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to configure vDPA device\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\telse\n \t\t\tdev->flags |= VIRTIO_DEV_VDPA_CONFIGURED;\n \t}\n@@ -3158,23 +3139,21 @@ static int process_slave_message_reply(struct virtio_net *dev,\n \tif ((msg->flags & VHOST_USER_NEED_REPLY) == 0)\n \t\treturn 0;\n \n-\tret = read_vhost_message(dev->slave_req_fd, &msg_reply);\n+\tret = read_vhost_message(dev, dev->slave_req_fd, &msg_reply);\n \tif (ret <= 0) {\n \t\tif (ret < 0)\n-\t\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"vhost read slave message reply failed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"(%s) vhost read slave message reply failed\\n\",\n+\t\t\t\t\tdev->ifname);\n \t\telse\n-\t\t\tVHOST_LOG_CONFIG(INFO,\n-\t\t\t\t\"vhost peer closed\\n\");\n+\t\t\tVHOST_LOG_CONFIG(INFO, \"(%s) vhost peer closed\\n\", dev->ifname);\n \t\tret = -1;\n \t\tgoto out;\n \t}\n \n \tret = 0;\n \tif (msg_reply.request.slave != msg->request.slave) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"Received unexpected msg type (%u), expected %u\\n\",\n-\t\t\tmsg_reply.request.slave, msg->request.slave);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) received unexpected msg type (%u), expected %u\\n\",\n+\t\t\t\tdev->ifname, msg_reply.request.slave, msg->request.slave);\n \t\tret = -1;\n \t\tgoto out;\n \t}\n@@ -3203,9 +3182,8 @@ vhost_user_iotlb_miss(struct virtio_net *dev, uint64_t iova, uint8_t perm)\n \n \tret = send_vhost_message(dev->slave_req_fd, &msg);\n \tif (ret < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Failed to send IOTLB miss message (%d)\\n\",\n-\t\t\t\tret);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to send IOTLB miss message (%d)\\n\",\n+\t\t\t\tdev->ifname, ret);\n \t\treturn ret;\n \t}\n \n@@ -3227,9 +3205,8 @@ vhost_user_slave_config_change(struct virtio_net *dev, bool need_reply)\n \n \tret = send_vhost_slave_message(dev, &msg);\n \tif (ret < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\t\"Failed to send config change (%d)\\n\",\n-\t\t\t\tret);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to send config change (%d)\\n\",\n+\t\t\t\tdev->ifname, ret);\n \t\treturn ret;\n \t}\n \n@@ -3274,8 +3251,8 @@ static int vhost_user_slave_set_vring_host_notifier(struct virtio_net *dev,\n \n \tret = send_vhost_slave_message(dev, &msg);\n \tif (ret < 0) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"Failed to set host notifier (%d)\\n\", ret);\n+\t\tVHOST_LOG_CONFIG(ERR, \"(%s) failed to set host notifier (%d)\\n\",\n+\t\t\t\tdev->ifname, ret);\n \t\treturn ret;\n \t}\n \n",
    "prefixes": [
        "5/7"
    ]
}