[PATCH 2/2] decnet: convert dndev_lock to spinlock

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Stephen Hemminger
Date: Wednesday, November 11, 2009 - 10:40 am

There is no reason for this lock to be reader/writer since
the reader only has lock held for a very brief period.
The overhead of read_lock is more expensive than spinlock.

Compile tested only, I am not a decnet user.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

--- a/net/decnet/dn_dev.c	2009-11-10 17:39:53.652984752 -0800
+++ b/net/decnet/dn_dev.c	2009-11-10 17:41:15.942736073 -0800
@@ -68,7 +68,7 @@ extern struct neigh_table dn_neigh_table
  */
 __le16 decnet_address = 0;
 
-static DEFINE_RWLOCK(dndev_lock);
+static DEFINE_SPINLOCK(dndev_lock);
 static struct net_device *decnet_default_device;
 static BLOCKING_NOTIFIER_HEAD(dnaddr_chain);
 
@@ -557,7 +557,8 @@ rarok:
 struct net_device *dn_dev_get_default(void)
 {
 	struct net_device *dev;
-	read_lock(&dndev_lock);
+
+	spin_lock(&dndev_lock);
 	dev = decnet_default_device;
 	if (dev) {
 		if (dev->dn_ptr)
@@ -565,7 +566,8 @@ struct net_device *dn_dev_get_default(vo
 		else
 			dev = NULL;
 	}
-	read_unlock(&dndev_lock);
+	spin_unlock(&dndev_lock);
+
 	return dev;
 }
 
@@ -575,13 +577,15 @@ int dn_dev_set_default(struct net_device
 	int rv = -EBUSY;
 	if (!dev->dn_ptr)
 		return -ENODEV;
-	write_lock(&dndev_lock);
+
+	spin_lock(&dndev_lock);
 	if (force || decnet_default_device == NULL) {
 		old = decnet_default_device;
 		decnet_default_device = dev;
 		rv = 0;
 	}
-	write_unlock(&dndev_lock);
+	spin_unlock(&dndev_lock);
+
 	if (old)
 		dev_put(old);
 	return rv;
@@ -589,13 +593,14 @@ int dn_dev_set_default(struct net_device
 
 static void dn_dev_check_default(struct net_device *dev)
 {
-	write_lock(&dndev_lock);
+	spin_lock(&dndev_lock);
 	if (dev == decnet_default_device) {
 		decnet_default_device = NULL;
 	} else {
 		dev = NULL;
 	}
-	write_unlock(&dndev_lock);
+	spin_unlock(&dndev_lock);
+
 	if (dev)
 		dev_put(dev);
 }

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 01/10] netdev: add netdev_continue_rcu, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 02/10] vlan: eliminate use of dev_base_lock, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 03/10] net: use rcu for network scheduler API, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 05/10] parisc: use RCU to find network device, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 06/10] s390: use RCU to walk list of network devices, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 07/10] decnet: use RCU to find network devices, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 08/10] ipv6: use RCU to walk list of network devices, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 09/10] IPV4: use rcu to walk list of devices in IGMP, Stephen Hemminger, (Tue Nov 10, 10:54 am)
[PATCH 10/10] CAN: use dev_get_by_index_rcu, Stephen Hemminger, (Tue Nov 10, 10:54 am)
Re: [PATCH 01/10] netdev: add netdev_continue_rcu, Eric Dumazet, (Tue Nov 10, 11:19 am)
Re: [PATCH 02/10] vlan: eliminate use of dev_base_lock, Eric Dumazet, (Tue Nov 10, 11:20 am)
Re: [PATCH 03/10] net: use rcu for network scheduler API, Eric Dumazet, (Tue Nov 10, 11:20 am)
Re: [PATCH 04/10] AOE: use rcu to find network device, Eric Dumazet, (Tue Nov 10, 11:23 am)
Re: [PATCH 05/10] parisc: use RCU to find network device, Eric Dumazet, (Tue Nov 10, 11:26 am)
Re: [PATCH 06/10] s390: use RCU to walk list of network de ..., Stephen Hemminger, (Tue Nov 10, 11:29 am)
Re: [PATCH 10/10] CAN: use dev_get_by_index_rcu, Eric Dumazet, (Tue Nov 10, 11:34 am)
Re: [PATCH 07/10] decnet: use RCU to find network devices, Eric Dumazet, (Tue Nov 10, 11:43 am)
Re: [PATCH 07/10] decnet: use RCU to find network devices, Stephen Hemminger, (Tue Nov 10, 11:50 am)
Re: [PATCH 07/10] decnet: use RCU to find network devices, Eric Dumazet, (Tue Nov 10, 12:25 pm)
Re: [PATCH 01/10] netdev: add netdev_continue_rcu, Paul E. McKenney, (Tue Nov 10, 12:39 pm)
Re: [PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Tue Nov 10, 4:06 pm)
Re: [PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Tue Nov 10, 4:53 pm)
Re: [PATCH 10/10] CAN: use dev_get_by_index_rcu, Oliver Hartkopp, (Tue Nov 10, 10:54 pm)
Re: [PATCH 01/10] netdev: add netdev_continue_rcu, David Miller, (Tue Nov 10, 11:47 pm)
Re: [PATCH 02/10] vlan: eliminate use of dev_base_lock, David Miller, (Tue Nov 10, 11:47 pm)
Re: [PATCH 03/10] net: use rcu for network scheduler API, David Miller, (Tue Nov 10, 11:47 pm)
Re: [PATCH 04/10] AOE: use rcu to find network device, David Miller, (Tue Nov 10, 11:48 pm)
Re: [PATCH 05/10] parisc: use RCU to find network device, David Miller, (Tue Nov 10, 11:48 pm)
Re: [PATCH 07/10] decnet: use RCU to find network devices, David Miller, (Tue Nov 10, 11:49 pm)
Re: [PATCH 10/10] CAN: use dev_get_by_index_rcu, David Miller, (Tue Nov 10, 11:50 pm)
[PATCH 1/2] decnet: add RTNL lock when reading address list, Stephen Hemminger, (Wed Nov 11, 10:39 am)
[PATCH 2/2] decnet: convert dndev_lock to spinlock, Stephen Hemminger, (Wed Nov 11, 10:40 am)
Re: [PATCH 2/2] decnet: convert dndev_lock to spinlock, David Miller, (Wed Nov 11, 8:56 pm)
Re: [PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Thu Nov 12, 10:10 am)
Re: [PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Thu Nov 12, 12:09 pm)
Re: [PATCH 04/10] AOE: use rcu to find network device, Stephen Hemminger, (Fri Nov 13, 3:24 pm)