- Fix a couple of locking botches.
- Remove calls to VOP_LEASE().
This commit is contained in:
parent
f6f787741b
commit
51d8643120
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: ufs_extattr.c,v 1.18 2008/01/25 10:49:32 pooka Exp $ */
|
||||
/* $NetBSD: ufs_extattr.c,v 1.19 2008/01/25 13:31:22 ad Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999-2002 Robert N. M. Watson
|
||||
@ -48,7 +48,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: ufs_extattr.c,v 1.18 2008/01/25 10:49:32 pooka Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: ufs_extattr.c,v 1.19 2008/01/25 13:31:22 ad Exp $");
|
||||
|
||||
#include "opt_ffs.h"
|
||||
|
||||
@ -314,7 +314,9 @@ ufs_extattr_enable_with_open(struct ufsmount *ump, struct vnode *vp,
|
||||
return (error);
|
||||
}
|
||||
|
||||
mutex_enter(&vp->v_interlock);
|
||||
vp->v_writecount++;
|
||||
mutex_exit(&vp->v_interlock);
|
||||
|
||||
vref(vp);
|
||||
|
||||
@ -608,7 +610,6 @@ ufs_extattr_enable(struct ufsmount *ump, int attrnamespace,
|
||||
auio.uio_rw = UIO_READ;
|
||||
UIO_SETUP_SYSSPACE(&auio);
|
||||
|
||||
VOP_LEASE(backing_vnode, l->l_cred, LEASE_WRITE);
|
||||
vn_lock(backing_vnode, LK_SHARED | LK_RETRY);
|
||||
error = VOP_READ(backing_vnode, &auio, IO_NODELOCKED,
|
||||
ump->um_extattr.uepm_ucred);
|
||||
@ -867,10 +868,6 @@ ufs_extattr_get(struct vnode *vp, int attrnamespace, const char *name,
|
||||
local_aio.uio_resid = sizeof(struct ufs_extattr_header);
|
||||
UIO_SETUP_SYSSPACE(&local_aio);
|
||||
|
||||
/*
|
||||
* Acquire locks.
|
||||
*/
|
||||
VOP_LEASE(attribute->uele_backing_vnode, cred, LEASE_READ);
|
||||
/*
|
||||
* Don't need to get a lock on the backing file if the getattr is
|
||||
* being applied to the backing file, as the lock is already held.
|
||||
@ -1008,8 +1005,10 @@ vop_setextattr {
|
||||
/*
|
||||
* XXX: No longer a supported way to delete extended attributes.
|
||||
*/
|
||||
if (ap->a_uio == NULL)
|
||||
if (ap->a_uio == NULL) {
|
||||
ufs_extattr_uepm_unlock(ump);
|
||||
return (EINVAL);
|
||||
}
|
||||
|
||||
error = ufs_extattr_set(ap->a_vp, ap->a_attrnamespace, ap->a_name,
|
||||
ap->a_uio, ap->a_cred, curlwp);
|
||||
@ -1086,11 +1085,6 @@ ufs_extattr_set(struct vnode *vp, int attrnamespace, const char *name,
|
||||
local_aio.uio_resid = sizeof(struct ufs_extattr_header);
|
||||
UIO_SETUP_SYSSPACE(&local_aio);
|
||||
|
||||
/*
|
||||
* Acquire locks.
|
||||
*/
|
||||
VOP_LEASE(attribute->uele_backing_vnode, cred, LEASE_WRITE);
|
||||
|
||||
/*
|
||||
* Don't need to get a lock on the backing file if the setattr is
|
||||
* being applied to the backing file, as the lock is already held.
|
||||
@ -1188,8 +1182,6 @@ ufs_extattr_rm(struct vnode *vp, int attrnamespace, const char *name,
|
||||
local_aio.uio_resid = sizeof(struct ufs_extattr_header);
|
||||
UIO_SETUP_SYSSPACE(&local_aio);
|
||||
|
||||
VOP_LEASE(attribute->uele_backing_vnode, cred, LEASE_WRITE);
|
||||
|
||||
/*
|
||||
* Don't need to get the lock on the backing vnode if the vnode we're
|
||||
* modifying is it, as we already hold the lock.
|
||||
|
Loading…
Reference in New Issue
Block a user