X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fklnds%2Fo2iblnd%2Fo2iblnd.c;h=ae83cee3103aa316c7c4f1608fd65a9f754486bf;hp=d5c61ab00c4790410af1e58ae6f19a59b33f2910;hb=abd0ce62e96523193bfc2e2a3f574bc59d6c9f7c;hpb=56f69854dae234fa974ab4f1dff909aea601a592 diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c index d5c61ab..ae83cee 100644 --- a/lnet/klnds/o2iblnd/o2iblnd.c +++ b/lnet/klnds/o2iblnd/o2iblnd.c @@ -2791,6 +2791,7 @@ kiblnd_dev_failover(struct kib_dev *dev, struct net *ns) unsigned long flags; int rc = 0; int i; + bool set_fatal = true; LASSERT(*kiblnd_tunables.kib_dev_failover > 1 || dev->ibd_can_failover || @@ -2836,6 +2837,8 @@ kiblnd_dev_failover(struct kib_dev *dev, struct net *ns) CERROR("Failed to bind %s:%pI4h to device(%p): %d\n", dev->ibd_ifname, &dev->ibd_ifip, cmid->device, rc); + if (!rc && !cmid->device) + set_fatal = false; rdma_destroy_id(cmid); goto out; } @@ -2924,11 +2927,13 @@ kiblnd_dev_failover(struct kib_dev *dev, struct net *ns) } else { dev->ibd_failed_failover = 0; - rcu_read_lock(); - netdev = dev_get_by_name_rcu(ns, dev->ibd_ifname); - if (netdev && (kiblnd_get_link_status(netdev) == 1)) - kiblnd_set_ni_fatal_on(dev->ibd_hdev, 0); - rcu_read_unlock(); + if (set_fatal) { + rcu_read_lock(); + netdev = dev_get_by_name_rcu(ns, dev->ibd_ifname); + if (netdev && (kiblnd_get_link_status(netdev) == 1)) + kiblnd_set_ni_fatal_on(dev->ibd_hdev, 0); + rcu_read_unlock(); + } } return rc;