On Sun, 13 Jan 2008 16:34:17 +0100 Andi Kleen <[EMAIL PROTECTED]> wrote:
> > > I think it should be in netdev_unregister_kobject(). But that would > > only get rid of one of the two calls to synchronize_rcu() in the > > unregister_netdev. > > Would be already an improvement. > > > The other synchronize_rcu() is for qdisc's and not sure if that one can > > be removed? > > The standard way to remove such calls is to set a "deleted" flag in the > object, > then check and ignore such objects in the reader and finally remove the > object with > call_rcu > > I have not checked if that is really feasible for qdiscs. > > -Andi Actually, the synchronize_rcu() is now acting a barrier between two sections in the current unregister process. It can't be removed. But, an alternative unregister_and_free_netdev() could be created that uses call_rcu. Basically: void unregistr_and_free_netdev() { do stuff before barrier... setup rcu callback call_rcu(); } static void netdev_after_rcu() { rtnl_lock(); do stuff after barier rtnl_unlock(); free_netdev } -- Stephen Hemminger <[EMAIL PROTECTED]> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html