diff options
author | jeff <jeff@FreeBSD.org> | 2005-01-24 10:48:29 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-01-24 10:48:29 +0000 |
commit | 1dd5432139d6d72c98413db88dd01066cd01e0f6 (patch) | |
tree | d54b614de87a030b3a296e2fe36f65353ec6b291 /sys/vm/vm_fault.c | |
parent | b033acd6747abedd271e867dc88b3e729a8d74bc (diff) | |
download | FreeBSD-src-1dd5432139d6d72c98413db88dd01066cd01e0f6.zip FreeBSD-src-1dd5432139d6d72c98413db88dd01066cd01e0f6.tar.gz |
- Remove GIANT_REQUIRED where giant is no longer required.
- Use VFS_LOCK_GIANT() rather than directly acquiring giant in places
where giant is only held because vfs requires it.
Sponsored By: Isilon Systems, Inc.
Diffstat (limited to 'sys/vm/vm_fault.c')
-rw-r--r-- | sys/vm/vm_fault.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 6f83c0b..2fc6a0e 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -97,6 +97,8 @@ __FBSDID("$FreeBSD$"); #include <vm/vnode_pager.h> #include <vm/vm_extern.h> +#include <sys/mount.h> /* XXX Temporary for VFS_LOCK_GIANT() */ + #define PFBAK 4 #define PFFOR 4 #define PAGEORDER_SIZE (PFBAK+PFFOR) @@ -165,10 +167,12 @@ unlock_and_deallocate(struct faultstate *fs) vm_object_deallocate(fs->first_object); unlock_map(fs); if (fs->vp != NULL) { - mtx_lock(&Giant); + int vfslocked; + + vfslocked = VFS_LOCK_GIANT(fs->vp->v_mount); vput(fs->vp); - mtx_unlock(&Giant); fs->vp = NULL; + VFS_UNLOCK_GIANT(vfslocked); } if (!fs->map->system_map) VM_UNLOCK_GIANT(); |