MFC: Reduce fluctuations of mnt_flag to allow unlocked readers to get a

slightly more consistent view.

Approved by:	re (kensmith)
This commit is contained in:
tegge 2006-10-09 19:56:37 +00:00
parent e78cd8c04c
commit 6802ff819c
2 changed files with 7 additions and 8 deletions

View File

@ -915,10 +915,9 @@ vfs_domount(
* Set the mount level flags.
*/
MNT_ILOCK(mp);
if (fsflags & MNT_RDONLY)
mp->mnt_flag |= MNT_RDONLY;
mp->mnt_flag &=~ MNT_UPDATEMASK;
mp->mnt_flag |= fsflags & (MNT_UPDATEMASK | MNT_FORCE | MNT_ROOTFS);
mp->mnt_flag = (mp->mnt_flag & ~MNT_UPDATEMASK) |
(fsflags & (MNT_UPDATEMASK | MNT_FORCE | MNT_ROOTFS |
MNT_RDONLY));
MNT_IUNLOCK(mp);
/*
* Mount the filesystem.
@ -950,11 +949,12 @@ vfs_domount(
mp->mnt_optnew = NULL;
if (mp->mnt_flag & MNT_UPDATE) {
MNT_ILOCK(mp);
mp->mnt_flag &=
~(MNT_UPDATE | MNT_RELOAD | MNT_FORCE | MNT_SNAPSHOT);
if (error)
mp->mnt_flag = (mp->mnt_flag & MNT_QUOTA) |
(flag & ~MNT_QUOTA);
else
mp->mnt_flag &= ~(MNT_UPDATE | MNT_RELOAD |
MNT_FORCE | MNT_SNAPSHOT);
MNT_IUNLOCK(mp);
if ((mp->mnt_flag & MNT_RDONLY) == 0) {
if (mp->mnt_syncer == NULL)

View File

@ -1424,8 +1424,7 @@ softdep_mount(devvp, mp, fs, cred)
int error, cyl;
MNT_ILOCK(mp);
mp->mnt_flag &= ~MNT_ASYNC;
mp->mnt_flag |= MNT_SOFTDEP;
mp->mnt_flag = (mp->mnt_flag & ~MNT_ASYNC) | MNT_SOFTDEP;
MNT_IUNLOCK(mp);
ump = VFSTOUFS(mp);
LIST_INIT(&ump->softdep_workitem_pending);