Commit 8c0bc550 authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by David S. Miller

bonding: adjust locking comments

Now that locks have been removed, remove some unnecessary comments and
adjust others to reflect reality. Also add a comment to "mode_lock" to
describe its current users and give a brief summary why they need it.
Signed-off-by: default avatarNikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e470259f
...@@ -119,7 +119,6 @@ static inline void tlb_init_slave(struct slave *slave) ...@@ -119,7 +119,6 @@ static inline void tlb_init_slave(struct slave *slave)
SLAVE_TLB_INFO(slave).head = TLB_NULL_INDEX; SLAVE_TLB_INFO(slave).head = TLB_NULL_INDEX;
} }
/* Caller must hold bond lock for read, BH disabled */
static void __tlb_clear_slave(struct bonding *bond, struct slave *slave, static void __tlb_clear_slave(struct bonding *bond, struct slave *slave,
int save_load) int save_load)
{ {
...@@ -142,7 +141,6 @@ static void __tlb_clear_slave(struct bonding *bond, struct slave *slave, ...@@ -142,7 +141,6 @@ static void __tlb_clear_slave(struct bonding *bond, struct slave *slave,
tlb_init_slave(slave); tlb_init_slave(slave);
} }
/* Caller must hold bond lock for read */
static void tlb_clear_slave(struct bonding *bond, struct slave *slave, static void tlb_clear_slave(struct bonding *bond, struct slave *slave,
int save_load) int save_load)
{ {
...@@ -199,7 +197,6 @@ static long long compute_gap(struct slave *slave) ...@@ -199,7 +197,6 @@ static long long compute_gap(struct slave *slave)
(s64) (SLAVE_TLB_INFO(slave).load << 3); /* Bytes to bits */ (s64) (SLAVE_TLB_INFO(slave).load << 3); /* Bytes to bits */
} }
/* Caller must hold bond lock for read */
static struct slave *tlb_get_least_loaded_slave(struct bonding *bond) static struct slave *tlb_get_least_loaded_slave(struct bonding *bond)
{ {
struct slave *slave, *least_loaded; struct slave *slave, *least_loaded;
...@@ -337,7 +334,6 @@ static int rlb_arp_recv(const struct sk_buff *skb, struct bonding *bond, ...@@ -337,7 +334,6 @@ static int rlb_arp_recv(const struct sk_buff *skb, struct bonding *bond,
return RX_HANDLER_ANOTHER; return RX_HANDLER_ANOTHER;
} }
/* Caller must hold bond lock for read */
static struct slave *rlb_next_rx_slave(struct bonding *bond) static struct slave *rlb_next_rx_slave(struct bonding *bond)
{ {
struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
...@@ -370,7 +366,7 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond) ...@@ -370,7 +366,7 @@ static struct slave *rlb_next_rx_slave(struct bonding *bond)
return rx_slave; return rx_slave;
} }
/* Caller must hold rcu_read_lock() for read */ /* Caller must hold rcu_read_lock() */
static struct slave *__rlb_next_rx_slave(struct bonding *bond) static struct slave *__rlb_next_rx_slave(struct bonding *bond)
{ {
struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
...@@ -749,7 +745,6 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond) ...@@ -749,7 +745,6 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
return tx_slave; return tx_slave;
} }
/* Caller must hold bond lock for read */
static void rlb_rebalance(struct bonding *bond) static void rlb_rebalance(struct bonding *bond)
{ {
struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
...@@ -1677,7 +1672,6 @@ void bond_alb_deinit_slave(struct bonding *bond, struct slave *slave) ...@@ -1677,7 +1672,6 @@ void bond_alb_deinit_slave(struct bonding *bond, struct slave *slave)
} }
/* Caller must hold bond lock for read */
void bond_alb_handle_link_change(struct bonding *bond, struct slave *slave, char link) void bond_alb_handle_link_change(struct bonding *bond, struct slave *slave, char link)
{ {
struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond)); struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
......
...@@ -1629,7 +1629,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) ...@@ -1629,7 +1629,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
/* /*
* Try to release the slave device <slave> from the bond device <master> * Try to release the slave device <slave> from the bond device <master>
* It is legal to access curr_active_slave without a lock because all the function * It is legal to access curr_active_slave without a lock because all the function
* is write-locked. If "all" is true it means that the function is being called * is RTNL-locked. If "all" is true it means that the function is being called
* while destroying a bond interface and all slaves are being released. * while destroying a bond interface and all slaves are being released.
* *
* The rules for slave state should be: * The rules for slave state should be:
...@@ -2494,7 +2494,7 @@ static void bond_loadbalance_arp_mon(struct work_struct *work) ...@@ -2494,7 +2494,7 @@ static void bond_loadbalance_arp_mon(struct work_struct *work)
* place for the slave. Returns 0 if no changes are found, >0 if changes * place for the slave. Returns 0 if no changes are found, >0 if changes
* to link states must be committed. * to link states must be committed.
* *
* Called with rcu_read_lock hold. * Called with rcu_read_lock held.
*/ */
static int bond_ab_arp_inspect(struct bonding *bond) static int bond_ab_arp_inspect(struct bonding *bond)
{ {
...@@ -2642,7 +2642,7 @@ static void bond_ab_arp_commit(struct bonding *bond) ...@@ -2642,7 +2642,7 @@ static void bond_ab_arp_commit(struct bonding *bond)
/* /*
* Send ARP probes for active-backup mode ARP monitor. * Send ARP probes for active-backup mode ARP monitor.
* *
* Called with rcu_read_lock hold. * Called with rcu_read_lock held.
*/ */
static bool bond_ab_arp_probe(struct bonding *bond) static bool bond_ab_arp_probe(struct bonding *bond)
{ {
......
...@@ -195,6 +195,12 @@ struct bonding { ...@@ -195,6 +195,12 @@ struct bonding {
s32 slave_cnt; /* never change this value outside the attach/detach wrappers */ s32 slave_cnt; /* never change this value outside the attach/detach wrappers */
int (*recv_probe)(const struct sk_buff *, struct bonding *, int (*recv_probe)(const struct sk_buff *, struct bonding *,
struct slave *); struct slave *);
/* mode_lock is used for mode-specific locking needs, currently used by:
* 3ad mode (4) - protect against running bond_3ad_unbind_slave() and
* bond_3ad_state_machine_handler() concurrently.
* TLB mode (5) - to sync the use and modifications of its hash table
* ALB mode (6) - to sync the use and modifications of its hash table
*/
spinlock_t mode_lock; spinlock_t mode_lock;
u8 send_peer_notif; u8 send_peer_notif;
u8 igmp_retrans; u8 igmp_retrans;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment