From 6e75bb0dfb296e532c3571fbc1a833003faf481a Mon Sep 17 00:00:00 2001 From: hannken Date: Fri, 14 Oct 2011 09:23:28 +0000 Subject: Change the vnode locking protocol of VOP_GETATTR() to request at least a shared lock. Make all calls outside of file systems respect it. The calls from file systems need review. No objections from tech-kern. --- sys/dev/dm/dm_target_linear.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sys/dev/dm/dm_target_linear.c') diff --git a/sys/dev/dm/dm_target_linear.c b/sys/dev/dm/dm_target_linear.c index a9b121f704c..7a03f173fe2 100644 --- a/sys/dev/dm/dm_target_linear.c +++ b/sys/dev/dm/dm_target_linear.c @@ -1,4 +1,4 @@ -/* $NetBSD: dm_target_linear.c,v 1.12 2010/12/23 14:58:13 mlelstv Exp $ */ +/* $NetBSD: dm_target_linear.c,v 1.13 2011/10/14 09:23:30 hannken Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -201,7 +201,10 @@ dm_target_linear_deps(dm_table_entry_t * table_en, prop_array_t prop_array) tlc = table_en->target_config; - if ((error = VOP_GETATTR(tlc->pdev->pdev_vnode, &va, curlwp->l_cred)) != 0) + vn_lock(tlc->pdev->pdev_vnode, LK_SHARED | LK_RETRY); + error = VOP_GETATTR(tlc->pdev->pdev_vnode, &va, curlwp->l_cred); + VOP_UNLOCK(tlc->pdev->pdev_vnode); + if (error != 0) return error; prop_array_add_uint64(prop_array, (uint64_t) va.va_rdev); -- cgit