bus/vdev: fix error log on secondary device scan
authorQi Zhang <qi.z.zhang@intel.com>
Mon, 3 Sep 2018 08:49:29 +0000 (16:49 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 16 Sep 2018 09:33:00 +0000 (11:33 +0200)
When a secondary process handles VDEV_SCAN_ONE mp action, it is possible
the device is already be inserted. This happens when we have multiple
secondary processes which cause multiple broadcasts from primary during
bus->scan. So we don't need to log any error for -EEXIST.

Bugzilla ID: 84
Fixes: cdb068f031c6 ("bus/vdev: scan by multi-process channel")
Cc: stable@dpdk.org
Reported-by: Gage Eads <gage.eads@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Gage Eads <gage.eads@intel.com>
drivers/bus/vdev/vdev.c

index 6139dd5..69dee89 100644 (file)
@@ -346,6 +346,7 @@ vdev_action(const struct rte_mp_msg *mp_msg, const void *peer)
        const struct vdev_param *in = (const struct vdev_param *)mp_msg->param;
        const char *devname;
        int num;
+       int ret;
 
        strlcpy(mp_resp.name, VDEV_MP_KEY, sizeof(mp_resp.name));
        mp_resp.len_param = sizeof(*ou);
@@ -380,7 +381,10 @@ vdev_action(const struct rte_mp_msg *mp_msg, const void *peer)
                break;
        case VDEV_SCAN_ONE:
                VDEV_LOG(INFO, "receive vdev, %s", in->name);
-               if (insert_vdev(in->name, NULL, NULL) < 0)
+               ret = insert_vdev(in->name, NULL, NULL);
+               if (ret == -EEXIST)
+                       VDEV_LOG(DEBUG, "device already exist, %s", in->name);
+               else if (ret < 0)
                        VDEV_LOG(ERR, "failed to add vdev, %s", in->name);
                break;
        default: