- if (oldnode != newnode)
- realloc_vq = 1;
-
- if (realloc_dev == 0 && realloc_vq == 0)
- return dev;
-
- if (realloc_dev)
- new_ll_dev = rte_malloc_socket(NULL,
- sizeof(struct virtio_net_config_ll), 0, newnode);
- if (realloc_vq)
- new_vq = rte_malloc_socket(NULL,
- sizeof(struct vhost_virtqueue), 0, newnode);
- if (!new_ll_dev && !new_vq)
- return dev;
-
- if (realloc_vq)
- memcpy(new_vq, old_vq, sizeof(*new_vq));
- if (realloc_dev)
- memcpy(new_ll_dev, old_ll_dev, sizeof(*new_ll_dev));
- (new_ll_dev ? new_ll_dev : old_ll_dev)->dev.virtqueue[index] =
- new_vq ? new_vq : old_vq;
- if (realloc_vq)
- rte_free(old_vq);
- if (realloc_dev) {
- if (ll_root == old_ll_dev)
- ll_root = new_ll_dev;
- else {
- struct virtio_net_config_ll *prev = ll_root;
- while (prev->next != old_ll_dev)
- prev = prev->next;
- prev->next = new_ll_dev;
- new_ll_dev->next = old_ll_dev->next;
+ if (oldnode != newnode) {
+ RTE_LOG(INFO, VHOST_CONFIG,
+ "reallocate dev from %d to %d node\n",
+ oldnode, newnode);
+ dev = rte_malloc_socket(NULL, sizeof(*dev), 0, newnode);
+ if (!dev) {
+ dev = old_dev;
+ goto out;