svn commit: r276408 - in stable/10/sys: fs/msdosfs kern
Konstantin Belousov
kib at FreeBSD.org
Tue Dec 30 10:30:14 UTC 2014
Author: kib
Date: Tue Dec 30 10:30:12 2014
New Revision: 276408
URL: https://svnweb.freebsd.org/changeset/base/276408
Log:
MFC r275638:
Do not call VFS_SYNC() before VFS_UNMOUNT() for forced unmount.
Modified:
stable/10/sys/fs/msdosfs/msdosfs_vfsops.c
stable/10/sys/kern/vfs_mount.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/fs/msdosfs/msdosfs_vfsops.c
==============================================================================
--- stable/10/sys/fs/msdosfs/msdosfs_vfsops.c Tue Dec 30 09:20:29 2014 (r276407)
+++ stable/10/sys/fs/msdosfs/msdosfs_vfsops.c Tue Dec 30 10:30:12 2014 (r276408)
@@ -797,11 +797,15 @@ msdosfs_unmount(struct mount *mp, int mn
int error, flags;
flags = 0;
- if (mntflags & MNT_FORCE)
+ error = msdosfs_sync(mp, MNT_WAIT);
+ if ((mntflags & MNT_FORCE) != 0) {
flags |= FORCECLOSE;
+ } else if (error != 0) {
+ return (error);
+ }
error = vflush(mp, 0, flags, curthread);
- if (error && error != ENXIO)
- return error;
+ if (error != 0 && error != ENXIO)
+ return (error);
pmp = VFSTOMSDOSFS(mp);
if ((pmp->pm_flags & MSDOSFSMNT_RONLY) == 0) {
error = markvoldirty(pmp, 0);
Modified: stable/10/sys/kern/vfs_mount.c
==============================================================================
--- stable/10/sys/kern/vfs_mount.c Tue Dec 30 09:20:29 2014 (r276407)
+++ stable/10/sys/kern/vfs_mount.c Tue Dec 30 10:30:12 2014 (r276408)
@@ -1305,8 +1305,8 @@ dounmount(mp, flags, td)
}
vput(fsrootvp);
}
- if (((mp->mnt_flag & MNT_RDONLY) ||
- (error = VFS_SYNC(mp, MNT_WAIT)) == 0) || (flags & MNT_FORCE) != 0)
+ if ((mp->mnt_flag & MNT_RDONLY) != 0 || (flags & MNT_FORCE) != 0 ||
+ (error = VFS_SYNC(mp, MNT_WAIT)) == 0)
error = VFS_UNMOUNT(mp, flags);
vn_finished_write(mp);
/*
More information about the svn-src-stable-10
mailing list