summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-05-30 16:45:41 +0000
committerkib <kib@FreeBSD.org>2012-05-30 16:45:41 +0000
commita9195b9fe2f69dd65ea6981da71c1dfff661dfdb (patch)
treed326f7bfdd1a38c770665702f607ea260bac9c44 /sys/ufs
parent080f2e89d9c5e9af64996cec3dae98923bc88f93 (diff)
downloadFreeBSD-src-a9195b9fe2f69dd65ea6981da71c1dfff661dfdb.zip
FreeBSD-src-a9195b9fe2f69dd65ea6981da71c1dfff661dfdb.tar.gz
Enable vn_io_fault() lock avoidance for UFS.
Tested by: pho MFC after: 2 months
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c2
-rw-r--r--sys/ufs/ffs/ffs_vnops.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 9aff694..fee8012 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1064,7 +1064,7 @@ ffs_mountfs(devvp, mp, td)
*/
MNT_ILOCK(mp);
mp->mnt_kern_flag |= MNTK_MPSAFE | MNTK_LOOKUP_SHARED |
- MNTK_EXTENDED_SHARED;
+ MNTK_EXTENDED_SHARED | MNTK_NO_IOPF;
MNT_IUNLOCK(mp);
#ifdef UFS_EXTATTR
#ifdef UFS_EXTATTR_AUTOSTART
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 0699eef..6259911 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -567,7 +567,7 @@ ffs_read(ap)
xfersize = size;
}
- error = uiomove((char *)bp->b_data + blkoffset,
+ error = vn_io_fault_uiomove((char *)bp->b_data + blkoffset,
(int)xfersize, uio);
if (error)
break;
@@ -738,8 +738,8 @@ ffs_write(ap)
if (size < xfersize)
xfersize = size;
- error =
- uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio);
+ error = vn_io_fault_uiomove((char *)bp->b_data + blkoffset,
+ (int)xfersize, uio);
/*
* If the buffer is not already filled and we encounter an
* error while trying to fill it, we have to clear out any
OpenPOWER on IntegriCloud