From f9f3f1ef983e987a2e09a49c3684405561fed634 Mon Sep 17 00:00:00 2001 From: GregorKopka Date: Thu, 19 Sep 2013 16:42:17 +0200 Subject: Removing unneeded mutex for reading vq_pending_tree size Locking mutex &vq->vq_lock in vdev_mirror_pending is unneeded: * no data is modified * only vq_pending_tree is read * in case garbage is returned (eg. vq_pending_tree being updated while the read is made) the worst case would be that a single read could be queued on a mirror side which more busy than thought The benefit of this change is streamlining of the code path since it is taken for *every* mirror member on *every* read. Signed-off-by: Brian Behlendorf Closes #1739 --- module/zfs/vdev_mirror.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'module/zfs/vdev_mirror.c') diff --git a/module/zfs/vdev_mirror.c b/module/zfs/vdev_mirror.c index e0884dc3c..e3d772ac2 100644 --- a/module/zfs/vdev_mirror.c +++ b/module/zfs/vdev_mirror.c @@ -89,14 +89,7 @@ static const zio_vsd_ops_t vdev_mirror_vsd_ops = { static int vdev_mirror_pending(vdev_t *vd) { - vdev_queue_t *vq = &vd->vdev_queue; - int pending; - - mutex_enter(&vq->vq_lock); - pending = avl_numnodes(&vq->vq_pending_tree); - mutex_exit(&vq->vq_lock); - - return (pending); + return avl_numnodes(&vd->vdev_queue.vq_pending_tree); } static mirror_map_t * -- cgit v1.2.3