summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2011-06-12 18:46:48 +0000
committermckusick <mckusick@FreeBSD.org>2011-06-12 18:46:48 +0000
commitabfa1c12cccf2764b50b308667229630534ac780 (patch)
tree2d38070cab83320042ef5331aedbea788d7a70e6 /sys/ufs
parentd4c7939beafe09c033866ebd290e274af0cc826d (diff)
downloadFreeBSD-src-abfa1c12cccf2764b50b308667229630534ac780.zip
FreeBSD-src-abfa1c12cccf2764b50b308667229630534ac780.tar.gz
Disable the soft updates journaling after a filesystem is successfully
downgraded to read-only. It will be restarted if the filesystem is upgraded back to read-write.
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_softdep.c11
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c2
2 files changed, 11 insertions, 2 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index c125ee3..4e75455 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -2386,8 +2386,15 @@ softdep_unmount(mp)
struct mount *mp;
{
- if (mp->mnt_kern_flag & MNTK_SUJ)
- journal_unmount(mp);
+ MNT_ILOCK(mp);
+ mp->mnt_flag &= ~MNT_SOFTDEP;
+ if ((mp->mnt_kern_flag & MNTK_SUJ) == 0) {
+ MNT_IUNLOCK(mp);
+ return;
+ }
+ mp->mnt_kern_flag &= ~MNTK_SUJ;
+ MNT_IUNLOCK(mp);
+ journal_unmount(mp);
}
struct jblocks {
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index c7e0bd1..b0f2d7e 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -269,6 +269,8 @@ ffs_mount(struct mount *mp)
vfs_write_resume(mp);
return (error);
}
+ if (mp->mnt_flag & MNT_SOFTDEP)
+ softdep_unmount(mp);
DROP_GIANT();
g_topology_lock();
g_access(ump->um_cp, 0, -1, 0);
OpenPOWER on IntegriCloud