svn commit: r233027 - in stable/9/sys: kern sys ufs/ffs
Konstantin Belousov
kib at FreeBSD.org
Fri Mar 16 10:51:43 UTC 2012
Author: kib
Date: Fri Mar 16 10:51:42 2012
New Revision: 233027
URL: http://svn.freebsd.org/changeset/base/233027
Log:
MFC r232709:
Decomission mnt_noasync. Introduce MNTK_NOASYNC mnt_kern_flag which
allows a filesystem to request VFS to not allow MNTK_ASYNC.
MFC note: the mnt_noasync member of struct mount is left as
padding to preserve the structure layout.
Modified:
stable/9/sys/kern/vfs_mount.c
stable/9/sys/kern/vfs_subr.c
stable/9/sys/sys/mount.h
stable/9/sys/ufs/ffs/ffs_softdep.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/kern/vfs_mount.c
==============================================================================
--- stable/9/sys/kern/vfs_mount.c Fri Mar 16 10:10:17 2012 (r233026)
+++ stable/9/sys/kern/vfs_mount.c Fri Mar 16 10:51:42 2012 (r233027)
@@ -836,7 +836,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;
@@ -976,7 +977,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;
@@ -1336,7 +1338,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: stable/9/sys/kern/vfs_subr.c
==============================================================================
--- stable/9/sys/kern/vfs_subr.c Fri Mar 16 10:10:17 2012 (r233026)
+++ stable/9/sys/kern/vfs_subr.c Fri Mar 16 10:51:42 2012 (r233027)
@@ -2940,6 +2940,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);
@@ -2992,7 +2993,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: stable/9/sys/sys/mount.h
==============================================================================
--- stable/9/sys/sys/mount.h Fri Mar 16 10:10:17 2012 (r233026)
+++ stable/9/sys/sys/mount.h Fri Mar 16 10:51:42 2012 (r233027)
@@ -167,7 +167,7 @@ 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 */
+ u_int mnt_pad_noasync;
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 +325,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: stable/9/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- stable/9/sys/ufs/ffs/ffs_softdep.c Fri Mar 16 10:10:17 2012 (r233026)
+++ stable/9/sys/ufs/ffs/ffs_softdep.c Fri Mar 16 10:51:42 2012 (r233027)
@@ -2367,8 +2367,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);
More information about the svn-src-stable-9
mailing list