forked from mirrors/linux
		
	net: Simplfy default_device_exit and improve batching.
- Defer dellink to net_cleanup() allowing for batching. - Fix comment. - Use for_each_netdev_safe again as dev_change_net_namespace touches at most one network device (unlike veth dellink). Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									999b6d39ab
								
							
						
					
					
						commit
						e008b5fc8d
					
				
					 1 changed files with 6 additions and 10 deletions
				
			
		|  | @ -5736,14 +5736,13 @@ static struct pernet_operations __net_initdata netdev_net_ops = { | |||
| 
 | ||||
| static void __net_exit default_device_exit(struct net *net) | ||||
| { | ||||
| 	struct net_device *dev; | ||||
| 	struct net_device *dev, *aux; | ||||
| 	/*
 | ||||
| 	 * Push all migratable of the network devices back to the | ||||
| 	 * Push all migratable network devices back to the | ||||
| 	 * initial network namespace | ||||
| 	 */ | ||||
| 	rtnl_lock(); | ||||
| restart: | ||||
| 	for_each_netdev(net, dev) { | ||||
| 	for_each_netdev_safe(net, dev, aux) { | ||||
| 		int err; | ||||
| 		char fb_name[IFNAMSIZ]; | ||||
| 
 | ||||
|  | @ -5751,11 +5750,9 @@ static void __net_exit default_device_exit(struct net *net) | |||
| 		if (dev->features & NETIF_F_NETNS_LOCAL) | ||||
| 			continue; | ||||
| 
 | ||||
| 		/* Delete virtual devices */ | ||||
| 		if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) { | ||||
| 			dev->rtnl_link_ops->dellink(dev, NULL); | ||||
| 			goto restart; | ||||
| 		} | ||||
| 		/* Leave virtual devices for the generic cleanup */ | ||||
| 		if (dev->rtnl_link_ops) | ||||
| 			continue; | ||||
| 
 | ||||
| 		/* Push remaing network devices to init_net */ | ||||
| 		snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex); | ||||
|  | @ -5765,7 +5762,6 @@ static void __net_exit default_device_exit(struct net *net) | |||
| 				__func__, dev->name, err); | ||||
| 			BUG(); | ||||
| 		} | ||||
| 		goto restart; | ||||
| 	} | ||||
| 	rtnl_unlock(); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Eric W. Biederman
						Eric W. Biederman