summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2014-08-02 04:06:35 +0000
committerdelphij <delphij@FreeBSD.org>2014-08-02 04:06:35 +0000
commitfc1b233fa4d8f8aaa75fbdd7cf640d804915f73b (patch)
tree999367b0df22064fd8ad8df6c9f3a949f048b01c /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
parent2f2875361e19bf1fdf4fde5c8e1763dcc4190620 (diff)
downloadFreeBSD-src-fc1b233fa4d8f8aaa75fbdd7cf640d804915f73b.zip
FreeBSD-src-fc1b233fa4d8f8aaa75fbdd7cf640d804915f73b.tar.gz
MFC r268865: MFV r268852:
Reduce lock contention on the z_teardown_lock under heavily cached read workload by splitting the single teardown rrw lock into RRM_NUM_LOCKS (17) of them. Read acquisitions are randomly distributed among these locks based on curthread pointer. Write acquisitions are going to all the locks, which for the usage of this type of lock should be rare. Illumos issue: 5008 lock contention (rrw_exit) while running a read only load
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index 6945397..ac55996 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -276,7 +276,7 @@ zfs_znode_move(void *buf, void *newbuf, size_t size, void *arg)
* can safely ensure that the filesystem is not and will not be
* unmounted. The next statement is equivalent to ZFS_ENTER().
*/
- rrw_enter(&zfsvfs->z_teardown_lock, RW_READER, FTAG);
+ rrm_enter(&zfsvfs->z_teardown_lock, RW_READER, FTAG);
if (zfsvfs->z_unmounted) {
ZFS_EXIT(zfsvfs);
rw_exit(&zfsvfs_lock);
OpenPOWER on IntegriCloud