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 <behlendorf1@llnl.gov> Closes #1739
This commit is contained in:
parent
77831e1738
commit
f9f3f1ef98
@ -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 *
|
||||
|
Loading…
Reference in New Issue
Block a user