summaryrefslogtreecommitdiffstats
path: root/Documentation/dma-buf-sharing.txt
diff options
context:
space:
mode:
authordingtianhong2013-12-13 03:19:39 +0100
committerDavid S. Miller2013-12-14 07:58:01 +0100
commit4cb4f97b7e361745281e843499ba58691112d2f8 (patch)
treeeb247661d99b945c070eb5ddd1875341d5b78446 /Documentation/dma-buf-sharing.txt
parentbonding: remove the no effect lock for bond_select_active_slave() (diff)
downloadkernel-qcow2-linux-4cb4f97b7e361745281e843499ba58691112d2f8.tar.gz
kernel-qcow2-linux-4cb4f97b7e361745281e843499ba58691112d2f8.tar.xz
kernel-qcow2-linux-4cb4f97b7e361745281e843499ba58691112d2f8.zip
bonding: rebuild the lock use for bond_mii_monitor()
The bond_mii_monitor() still use bond lock to protect bond slave list, it is no effect, I have 2 way to fix the problem, move the RTNL to the top of the function, or add RCU to protect the bond slave list, according to the Jay Vosburgh's opinion, 10 times one second is a truely big performance loss if use RTNL to protect the whole monitor, so I would take the advice and use RCU to protect the bond slave list. The bond_has_slave() will not protect by anything, there will no things happen if the slave list is be changed, unless the bond was free, but it will not happened before the monitor, the bond will closed before be freed. The peers notify for the bond will calling curr_active_slave, so derefence the slave to make sure we will accessing the same slave if the curr_active_slave changed, as the rcu dereference need in read-side critical sector and bond_change_active_slave() will call it with no RCU hold, so add peer notify in rcu_read_lock which will be nested in monitor. Suggested-by: Jay Vosburgh <fubar@us.ibm.com> Suggested-by: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'Documentation/dma-buf-sharing.txt')
0 files changed, 0 insertions, 0 deletions