diff options
author | mckusick <mckusick@FreeBSD.org> | 2011-06-12 18:46:48 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2011-06-12 18:46:48 +0000 |
commit | abfa1c12cccf2764b50b308667229630534ac780 (patch) | |
tree | 2d38070cab83320042ef5331aedbea788d7a70e6 /sys/ufs/ffs | |
parent | d4c7939beafe09c033866ebd290e274af0cc826d (diff) | |
download | FreeBSD-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/ffs')
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 11 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 2 |
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); |