mirror_zfs/module
Chunwei Chen f58040c0fc Implement a proper rw_tryupgrade
Current rw_tryupgrade does rw_exit and then rw_tryenter(RW_RWITER), and then
does rw_enter(RW_READER) if it fails. This violate the assumption that
rw_tryupgrade should be atomic and could cause extra contention or even lock
inversion.

This patch we implement a proper rw_tryupgrade. For rwsem-spinlock, we take
the spinlock to check rwsem->count and rwsem->wait_list. For normal rwsem, we
use cmpxchg on rwsem->count to change the value from single reader to single
writer.

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Closes zfsonlinux/zfs#4692
Closes #554
2016-05-31 11:44:15 -07:00
..
spl Implement a proper rw_tryupgrade 2016-05-31 11:44:15 -07:00
splat Implement a proper rw_tryupgrade 2016-05-31 11:44:15 -07:00
.gitignore gitignore: anchor entries at their respective directory 2013-04-02 11:07:52 -07:00
Makefile.in Prevent rm modules.* when make install 2015-12-02 14:38:20 -08:00