svn commit: r367890 - head/sys/fs/msdosfs

Konstantin Belousov kib at FreeBSD.org
Fri Nov 20 12:31:03 UTC 2020


Author: kib
Date: Fri Nov 20 12:31:02 2020
New Revision: 367890
URL: https://svnweb.freebsd.org/changeset/base/367890

Log:
  msdosfs: Add trivial support for suspension.
  
  Tested by:	pho (previous version)
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week
  Differential revision:	https://reviews.freebsd.org/D27269

Modified:
  head/sys/fs/msdosfs/msdosfs_vfsops.c
  head/sys/fs/msdosfs/msdosfs_vnops.c

Modified: head/sys/fs/msdosfs/msdosfs_vfsops.c
==============================================================================
--- head/sys/fs/msdosfs/msdosfs_vfsops.c	Fri Nov 20 11:45:08 2020	(r367889)
+++ head/sys/fs/msdosfs/msdosfs_vfsops.c	Fri Nov 20 12:31:02 2020	(r367890)
@@ -950,6 +950,12 @@ loop:
 	error = msdosfs_fsiflush(pmp, waitfor);
 	if (error != 0)
 		allerror = error;
+
+	if (allerror == 0 && waitfor == MNT_SUSPEND) {
+		MNT_ILOCK(mp);
+		mp->mnt_kern_flag |= MNTK_SUSPEND2 | MNTK_SUSPENDED;
+		MNT_IUNLOCK(mp);
+	}
 	return (allerror);
 }
 

Modified: head/sys/fs/msdosfs/msdosfs_vnops.c
==============================================================================
--- head/sys/fs/msdosfs/msdosfs_vnops.c	Fri Nov 20 11:45:08 2020	(r367889)
+++ head/sys/fs/msdosfs/msdosfs_vnops.c	Fri Nov 20 12:31:02 2020	(r367890)
@@ -848,7 +848,7 @@ msdosfs_fsync(struct vop_fsync_args *ap)
 	* Non-critical metadata for associated directory entries only
 	* gets synced accidentally, as in most file systems.
 	*/
-	if (ap->a_waitfor == MNT_WAIT) {
+	if (ap->a_waitfor != MNT_NOWAIT) {
 		devvp = VTODE(ap->a_vp)->de_pmp->pm_devvp;
 		vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
 		allerror = VOP_FSYNC(devvp, MNT_WAIT, ap->a_td);
@@ -856,7 +856,7 @@ msdosfs_fsync(struct vop_fsync_args *ap)
 	} else
 		allerror = 0;
 
-	error = deupdat(VTODE(ap->a_vp), ap->a_waitfor == MNT_WAIT);
+	error = deupdat(VTODE(ap->a_vp), ap->a_waitfor != MNT_NOWAIT);
 	if (allerror == 0)
 		allerror = error;
 	return (allerror);


More information about the svn-src-all mailing list