And by the way, this current patch has a deadlock I think: > @@ -724,6 +724,8 @@ int ipoib_ib_dev_down(struct net_device *dev, int flush) > ipoib_dbg(priv, "downing ib_dev\n"); > > clear_bit(IPOIB_FLAG_OPER_UP, &priv->flags); > + cancel_delayed_work(&priv->carrier_on_task);
ipoib_ib_dev_down() is called with rtnl held but carrier_on_task() does rtn_lock(). So if carrier_on_task() is running but about to take the rtnl when we try to do cancel_delayed_work() here, then it will wait forever. I think using lockdep on a new enough kernel (2.6.30 or maybe 2.6.31) will report workqueue / timer vs. lock deadlocks. - R. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
