Skip to content

Commit

Permalink
Merge pull request #357 from mars1024/bugfix/host-device
Browse files Browse the repository at this point in the history
host-device: revert name setting to make retries idempotent
  • Loading branch information
rosenhouse committed Aug 7, 2019
2 parents a11cb62 + 5e2e365 commit ccd683e
Show file tree
Hide file tree
Showing 2 changed files with 301 additions and 36 deletions.
15 changes: 12 additions & 3 deletions plugins/main/host-device/host-device.go
Expand Up @@ -218,14 +218,23 @@ func moveLinkOut(containerNs ns.NetNS, ifName string) error {
}

// Devices can be renamed only when down
if err := netlink.LinkSetDown(dev); err != nil {
if err = netlink.LinkSetDown(dev); err != nil {
return fmt.Errorf("failed to set %q down: %v", ifName, err)
}

// Rename device to it's original name
if err := netlink.LinkSetName(dev, dev.Attrs().Alias); err != nil {
if err = netlink.LinkSetName(dev, dev.Attrs().Alias); err != nil {
return fmt.Errorf("failed to restore %q to original name %q: %v", ifName, dev.Attrs().Alias, err)
}
if err := netlink.LinkSetNsFd(dev, int(defaultNs.Fd())); err != nil {
defer func() {
if err != nil {
// if moving device to host namespace fails, we should revert device name
// to ifName to make sure that device can be found in retries
_ = netlink.LinkSetName(dev, ifName)
}
}()

if err = netlink.LinkSetNsFd(dev, int(defaultNs.Fd())); err != nil {
return fmt.Errorf("failed to move %q to host netns: %v", dev.Attrs().Alias, err)
}
return nil
Expand Down

0 comments on commit ccd683e

Please sign in to comment.