net: Introduce dev_get_by_name_rcu()
Subsystems (2)
PATCH 1/1 net: Introduce dev_get_by_name_rcu()
Some workloads hit dev_base_lock rwlock pretty hard. We can use RCU lookups to avoid touching this rwlock (and avoid touching netdevice refcount)
netdevices are already freed after a RCU grace period, so this patch adds no penalty at device dismantle time.
However, it adds a synchronize_rcu() call in dev_change_name()
Signed-off-by Eric Dumazet <[email protected]>
--- include/linux/netdevice.h | 1 net/core/dev.c | 49 +++++++++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 9 deletions(-)
include/linux/netdevice.h +1 -0
@@ -1115,6 +1115,7 @@ extern void __dev_remove_pack(struct packet_type *pt);extern struct net_device *dev_get_by_flags (struct net *net,unsigned short flags,unsigned short mask);extern struct net_device *dev_get_by_name (struct net *net,const char *name); +extern struct net_device *dev_get_by_name_rcu (struct net *net,const char *name);extern struct net_device *__dev_get_by_name (struct net *net,const char *name);extern int dev_alloc_name (struct net_device *dev,const char *name);extern int dev_open (struct net_device *dev);
net/core/dev.c +40 -9
87 lines not on this page · raw message