summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-05-21 10:13:25 +0000
committerkib <kib@FreeBSD.org>2016-05-21 10:13:25 +0000
commite006a8a1fd008216e288d36df9f6cfb7c9152f76 (patch)
treefe231c8fc2522158e4269ac327ec790b95de3ee2 /sys/ufs
parentd0b1101f75081e9ee169b96d5ca17e94b4962037 (diff)
downloadFreeBSD-src-e006a8a1fd008216e288d36df9f6cfb7c9152f76.zip
FreeBSD-src-e006a8a1fd008216e288d36df9f6cfb7c9152f76.tar.gz
Stop dropping and reacquiring Giant around geom calls in UFS.
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c16
1 files changed, 0 insertions, 16 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 4a57ee5..7ecb053 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -239,14 +239,12 @@ ffs_mount(struct mount *mp)
if ((error = ffs_flushfiles(mp, WRITECLOSE, td)) != 0 ||
(error = ffs_sbupdate(ump, MNT_WAIT, 0)) != 0)
return (error);
- DROP_GIANT();
g_topology_lock();
/*
* Return to normal read-only mode.
*/
error = g_access(ump->um_cp, 0, -1, 0);
g_topology_unlock();
- PICKUP_GIANT();
ump->um_fsckpid = 0;
}
if (fs->fs_ronly == 0 &&
@@ -294,14 +292,12 @@ ffs_mount(struct mount *mp)
}
if (MOUNTEDSOFTDEP(mp))
softdep_unmount(mp);
- DROP_GIANT();
g_topology_lock();
/*
* Drop our write and exclusive access.
*/
g_access(ump->um_cp, 0, -1, -1);
g_topology_unlock();
- PICKUP_GIANT();
fs->fs_ronly = 1;
MNT_ILOCK(mp);
mp->mnt_flag |= MNT_RDONLY;
@@ -359,14 +355,12 @@ ffs_mount(struct mount *mp)
return (EPERM);
}
}
- DROP_GIANT();
g_topology_lock();
/*
* Request exclusive write access.
*/
error = g_access(ump->um_cp, 0, 1, 1);
g_topology_unlock();
- PICKUP_GIANT();
if (error)
return (error);
if ((error = vn_start_write(NULL, &mp, V_WAIT)) != 0)
@@ -433,14 +427,12 @@ ffs_mount(struct mount *mp)
}
KASSERT(MOUNTEDSOFTDEP(mp) == 0,
("soft updates enabled on read-only file system"));
- DROP_GIANT();
g_topology_lock();
/*
* Request write access.
*/
error = g_access(ump->um_cp, 0, 1, 0);
g_topology_unlock();
- PICKUP_GIANT();
if (error) {
vfs_mount_error(mp,
"Checker activation failed on %s",
@@ -523,14 +515,12 @@ ffs_mount(struct mount *mp)
("soft updates enabled on read-only file system"));
ump = VFSTOUFS(mp);
fs = ump->um_fs;
- DROP_GIANT();
g_topology_lock();
/*
* Request write access.
*/
error = g_access(ump->um_cp, 0, 1, 0);
g_topology_unlock();
- PICKUP_GIANT();
if (error) {
printf("WARNING: %s: Checker activation "
"failed\n", fs->fs_fsmnt);
@@ -771,11 +761,9 @@ ffs_mountfs(devvp, mp, td)
VOP_UNLOCK(devvp, 0);
return (EBUSY);
}
- DROP_GIANT();
g_topology_lock();
error = g_vfs_open(devvp, &cp, "ffs", ronly ? 0 : 1);
g_topology_unlock();
- PICKUP_GIANT();
if (error != 0) {
atomic_store_rel_ptr((uintptr_t *)&dev->si_mountpt, 0);
VOP_UNLOCK(devvp, 0);
@@ -1090,11 +1078,9 @@ out:
if (bp)
brelse(bp);
if (cp != NULL) {
- DROP_GIANT();
g_topology_lock();
g_vfs_close(cp);
g_topology_unlock();
- PICKUP_GIANT();
}
if (ump) {
mtx_destroy(UFS_MTX(ump));
@@ -1280,7 +1266,6 @@ ffs_unmount(mp, mntflags)
taskqueue_drain_all(ump->um_trim_tq);
taskqueue_free(ump->um_trim_tq);
}
- DROP_GIANT();
g_topology_lock();
if (ump->um_fsckpid > 0) {
/*
@@ -1291,7 +1276,6 @@ ffs_unmount(mp, mntflags)
}
g_vfs_close(ump->um_cp);
g_topology_unlock();
- PICKUP_GIANT();
atomic_store_rel_ptr((uintptr_t *)&ump->um_dev->si_mountpt, 0);
vrele(ump->um_devvp);
dev_rel(ump->um_dev);
OpenPOWER on IntegriCloud