summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_fault.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-10-22 17:50:54 +0000
committerkib <kib@FreeBSD.org>2012-10-22 17:50:54 +0000
commit560aa751e0f5cfef868bdf3fab01cdbc5169ef82 (patch)
tree6e9ef0a47c5e91d26227820c50c9767e84550821 /sys/vm/vm_fault.c
parentca71b68ea40c83f641d6485e027368568f244197 (diff)
downloadFreeBSD-src-560aa751e0f5cfef868bdf3fab01cdbc5169ef82.zip
FreeBSD-src-560aa751e0f5cfef868bdf3fab01cdbc5169ef82.tar.gz
Remove the support for using non-mpsafe filesystem modules.
In particular, do not lock Giant conditionally when calling into the filesystem module, remove the VFS_LOCK_GIANT() and related macros. Stop handling buffers belonging to non-mpsafe filesystems. The VFS_VERSION is bumped to indicate the interface change which does not result in the interface signatures changes. Conducted and reviewed by: attilio Tested by: pho
Diffstat (limited to 'sys/vm/vm_fault.c')
-rw-r--r--sys/vm/vm_fault.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index e3a29f0..a3a90c6 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -102,8 +102,6 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_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)
@@ -135,7 +133,6 @@ struct faultstate {
vm_map_entry_t entry;
int lookup_still_valid;
struct vnode *vp;
- int vfslocked;
};
static void vm_fault_cache_behind(const struct faultstate *fs, int distance);
@@ -182,8 +179,6 @@ unlock_and_deallocate(struct faultstate *fs)
vput(fs->vp);
fs->vp = NULL;
}
- VFS_UNLOCK_GIANT(fs->vfslocked);
- fs->vfslocked = 0;
}
/*
@@ -255,7 +250,6 @@ vm_fault_hold(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
growstack = TRUE;
PCPU_INC(cnt.v_vm_faults);
fs.vp = NULL;
- fs.vfslocked = 0;
faultcount = reqpage = 0;
RetryFault:;
@@ -513,7 +507,6 @@ readrest:
*/
unlock_map(&fs);
-vnode_lock:
if (fs.object->type == OBJT_VNODE) {
vp = fs.object->handle;
if (vp == fs.vp)
@@ -524,25 +517,12 @@ vnode_lock:
}
locked = VOP_ISLOCKED(vp);
- if (VFS_NEEDSGIANT(vp->v_mount) && !fs.vfslocked) {
- fs.vfslocked = 1;
- if (!mtx_trylock(&Giant)) {
- VM_OBJECT_UNLOCK(fs.object);
- mtx_lock(&Giant);
- VM_OBJECT_LOCK(fs.object);
- goto vnode_lock;
- }
- }
if (locked != LK_EXCLUSIVE)
locked = LK_SHARED;
/* Do not sleep for vnode lock while fs.m is busy */
error = vget(vp, locked | LK_CANRECURSE |
LK_NOWAIT, curthread);
if (error != 0) {
- int vfslocked;
-
- vfslocked = fs.vfslocked;
- fs.vfslocked = 0; /* Keep Giant */
vhold(vp);
release_page(&fs);
unlock_and_deallocate(&fs);
@@ -550,7 +530,6 @@ vnode_lock:
LK_CANRECURSE, curthread);
vdrop(vp);
fs.vp = vp;
- fs.vfslocked = vfslocked;
KASSERT(error == 0,
("vm_fault: vget failed"));
goto RetryFault;
OpenPOWER on IntegriCloud