Author: kib
Date: Fri Mar  9 00:12:05 2012
New Revision: 232709
URL: http://svn.freebsd.org/changeset/base/232709

Log:
  Decomission mnt_noasync. Introduce MNTK_NOASYNC mnt_kern_flag which
  allows a filesystem to request VFS to not allow MNTK_ASYNC.
  
  MFC after:    1 week

Modified:
  head/sys/kern/vfs_mount.c
  head/sys/kern/vfs_subr.c
  head/sys/sys/mount.h
  head/sys/ufs/ffs/ffs_softdep.c

Modified: head/sys/kern/vfs_mount.c
==============================================================================
--- head/sys/kern/vfs_mount.c   Thu Mar  8 23:59:49 2012        (r232708)
+++ head/sys/kern/vfs_mount.c   Fri Mar  9 00:12:05 2012        (r232709)
@@ -851,7 +851,8 @@ vfs_domount_first(
        mp->mnt_optnew = NULL;
 
        MNT_ILOCK(mp);
-       if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+       if ((mp->mnt_flag & MNT_ASYNC) != 0 &&
+           (mp->mnt_kern_flag & MNTK_NOASYNC) == 0)
                mp->mnt_kern_flag |= MNTK_ASYNC;
        else
                mp->mnt_kern_flag &= ~MNTK_ASYNC;
@@ -991,7 +992,8 @@ vfs_domount_update(
                 */
                mp->mnt_flag = (mp->mnt_flag & MNT_QUOTA) | (flag & ~MNT_QUOTA);
        }
-       if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+       if ((mp->mnt_flag & MNT_ASYNC) != 0 &&
+           (mp->mnt_kern_flag & MNTK_NOASYNC) == 0)
                mp->mnt_kern_flag |= MNTK_ASYNC;
        else
                mp->mnt_kern_flag &= ~MNTK_ASYNC;
@@ -1351,7 +1353,8 @@ dounmount(mp, flags, td)
                }
                mp->mnt_kern_flag &= ~(MNTK_UNMOUNT | MNTK_UNMOUNTF);
                mp->mnt_flag |= async_flag;
-               if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+               if ((mp->mnt_flag & MNT_ASYNC) != 0 &&
+                   (mp->mnt_kern_flag & MNTK_NOASYNC) == 0)
                        mp->mnt_kern_flag |= MNTK_ASYNC;
                if (mp->mnt_kern_flag & MNTK_MWAIT) {
                        mp->mnt_kern_flag &= ~MNTK_MWAIT;

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c    Thu Mar  8 23:59:49 2012        (r232708)
+++ head/sys/kern/vfs_subr.c    Fri Mar  9 00:12:05 2012        (r232709)
@@ -2942,6 +2942,7 @@ DB_SHOW_COMMAND(mount, db_show_mount)
        MNT_KERN_FLAG(MNTK_REFEXPIRE);
        MNT_KERN_FLAG(MNTK_EXTENDED_SHARED);
        MNT_KERN_FLAG(MNTK_SHARED_WRITES);
+       MNT_KERN_FLAG(MNTK_NOASYNC);
        MNT_KERN_FLAG(MNTK_UNMOUNT);
        MNT_KERN_FLAG(MNTK_MWAIT);
        MNT_KERN_FLAG(MNTK_SUSPEND);
@@ -2994,7 +2995,6 @@ DB_SHOW_COMMAND(mount, db_show_mount)
        db_printf("    mnt_gen = %d\n", mp->mnt_gen);
        db_printf("    mnt_nvnodelistsize = %d\n", mp->mnt_nvnodelistsize);
        db_printf("    mnt_writeopcount = %d\n", mp->mnt_writeopcount);
-       db_printf("    mnt_noasync = %u\n", mp->mnt_noasync);
        db_printf("    mnt_maxsymlinklen = %d\n", mp->mnt_maxsymlinklen);
        db_printf("    mnt_iosize_max = %d\n", mp->mnt_iosize_max);
        db_printf("    mnt_hashseed = %u\n", mp->mnt_hashseed);

Modified: head/sys/sys/mount.h
==============================================================================
--- head/sys/sys/mount.h        Thu Mar  8 23:59:49 2012        (r232708)
+++ head/sys/sys/mount.h        Fri Mar  9 00:12:05 2012        (r232709)
@@ -167,7 +167,6 @@ struct mount {
        int             mnt_writeopcount;       /* (i) write syscalls pending */
        int             mnt_kern_flag;          /* (i) kernel only flags */
        uint64_t        mnt_flag;               /* (i) flags shared with user */
-       u_int           mnt_noasync;            /* (i) # noasync overrides */
        struct vfsoptlist *mnt_opt;             /* current mount options */
        struct vfsoptlist *mnt_optnew;          /* new options passed to fs */
        int             mnt_maxsymlinklen;      /* max size of short symlink */
@@ -325,6 +324,7 @@ void          __mnt_vnode_markerfree(str
 #define        MNTK_REFEXPIRE  0x00000020      /* refcount expiring is 
happening */
 #define MNTK_EXTENDED_SHARED   0x00000040 /* Allow shared locking for more ops 
*/
 #define        MNTK_SHARED_WRITES      0x00000080 /* Allow shared locking for 
writes */
+#define MNTK_NOASYNC   0x00800000      /* disable async */
 #define MNTK_UNMOUNT   0x01000000      /* unmount in progress */
 #define        MNTK_MWAIT      0x02000000      /* waiting for unmount to 
finish */
 #define        MNTK_SUSPEND    0x08000000      /* request write suspension */

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c      Thu Mar  8 23:59:49 2012        
(r232708)
+++ head/sys/ufs/ffs/ffs_softdep.c      Fri Mar  9 00:12:05 2012        
(r232709)
@@ -2368,8 +2368,7 @@ softdep_mount(devvp, mp, fs, cred)
        mp->mnt_flag = (mp->mnt_flag & ~MNT_ASYNC) | MNT_SOFTDEP;
        if ((mp->mnt_kern_flag & MNTK_SOFTDEP) == 0) {
                mp->mnt_kern_flag = (mp->mnt_kern_flag & ~MNTK_ASYNC) | 
-                       MNTK_SOFTDEP;
-               mp->mnt_noasync++;
+                       MNTK_SOFTDEP | MNTK_NOASYNC;
        }
        MNT_IUNLOCK(mp);
        ump = VFSTOUFS(mp);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to