Since commit ecc73eb2 ("ovs-port: always remove the OVSDB entry on slave release"), ovs port were removing the ovsdb entry upon being un-enslaved, no matter what the reason for un-enslavement was. The idea was to remove the stale ovsdb entry upon forcible device removal.
This cleanup is specific to OpenVSwitch, since for other device types, the device master is the property of the slave and thus goes away along with the device.
Turns out we're now removing the ovsdb entry even when the device actually doesn't go away, but we're pretending it does because the daemon is shutting down.
To add insult to injury, we generally end up removing one entry, because the other ovsdb calls end up in a queue and don't get serviced before the daemon shuts down. The result is a mess. (This patch doesn't solve that -- if someone terminates the daemon with in-flight ovsdb calls they're still out of luck).
Let's do the cleanup now only if the device was actually physically removed.
Fixed: commit ecc73eb2 ("ovs-port: always remove the OVSDB entry on slave release")