Author: kib
Date: Fri Nov 27 11:48:33 2020
New Revision: 368102
URL: https://svnweb.freebsd.org/changeset/base/368102

Log:
  MFC r367890:
  msdosfs: Add trivial support for suspension.

Modified:
  stable/12/sys/fs/msdosfs/msdosfs_vfsops.c
  stable/12/sys/fs/msdosfs/msdosfs_vnops.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/fs/msdosfs/msdosfs_vfsops.c
==============================================================================
--- stable/12/sys/fs/msdosfs/msdosfs_vfsops.c   Fri Nov 27 11:12:59 2020        
(r368101)
+++ stable/12/sys/fs/msdosfs/msdosfs_vfsops.c   Fri Nov 27 11:48:33 2020        
(r368102)
@@ -941,6 +941,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: stable/12/sys/fs/msdosfs/msdosfs_vnops.c
==============================================================================
--- stable/12/sys/fs/msdosfs/msdosfs_vnops.c    Fri Nov 27 11:12:59 2020        
(r368101)
+++ stable/12/sys/fs/msdosfs/msdosfs_vnops.c    Fri Nov 27 11:48:33 2020        
(r368102)
@@ -849,7 +849,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);
@@ -857,7 +857,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);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to