! ! This unfortunately include whitespace chnages, needs sbin/mount ! from head after my commit from last weekend and currently is a ! hack avoiding xflags; we'll need to sort out how to correctly ! do this but (if I actually got all the changes) gives: ! ! /dev/ad4s2d on /var (ufs, local, soft-updates+journal) ! Index: sbin/mount/mount.c =================================================================== --- sbin/mount/mount.c (revision 204910) +++ sbin/mount/mount.c (working copy) @@ -624,6 +624,8 @@ prmount(struct statfs *sfp) for (o = optnames; flags != 0 && o->o_opt != 0; o++) if (flags & o->o_opt) { (void)printf(", %s", o->o_name); + if ((o->o_opt == MNT_SOFTDEP) && (flags & MNT_SUJ)) + (void)printf("+journal"); flags &= ~o->o_opt; } /* Index: sys/sys/mount.h =================================================================== --- sys/sys/mount.h (revision 204910) +++ sys/sys/mount.h (working copy) @@ -228,10 +228,12 @@ void __mnt_vnode_markerfree(struct vnode #define MNT_SYNCHRONOUS 0x00000002 /* filesystem written synchronously */ #define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */ #define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */ +#define MNT_NFS4ACLS 0x00000010 #define MNT_UNION 0x00000020 /* union with underlying filesystem */ #define MNT_ASYNC 0x00000040 /* filesystem written asynchronously */ #define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */ #define MNT_SOFTDEP 0x00200000 /* soft updates being done */ +#define MNT_SUJ 0x0000000100000000 /* journaling on soft updates */ #define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */ #define MNT_GJOURNAL 0x02000000 /* GEOM journal support enabled */ #define MNT_MULTILABEL 0x04000000 /* MAC support for individual objects */ @@ -239,7 +241,6 @@ void __mnt_vnode_markerfree(struct vnode #define MNT_NOATIME 0x10000000 /* disable update of file access time */ #define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ #define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ -#define MNT_NFS4ACLS 0x00000010 /* * NFS export related mount flags. @@ -275,7 +276,8 @@ void __mnt_vnode_markerfree(struct vnode MNT_ROOTFS | MNT_NOATIME | MNT_NOCLUSTERR| \ MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ - MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | MNT_NFS4ACLS) + MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \ + MNT_NFS4ACLS | MNT_SUJ) /* Mask of flags that can be updated. */ #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ Index: sys/kern/vfs_syscalls.c =================================================================== --- sys/kern/vfs_syscalls.c (revision 204910) +++ sys/kern/vfs_syscalls.c (working copy) @@ -320,6 +320,8 @@ kern_statfs(struct thread *td, char *path, enum ui sp->f_version = STATFS_VERSION; sp->f_namemax = NAME_MAX; sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + if (mp->mnt_kern_flag & MNTK_SUJ) + sp->f_flags |= (MNT_SUJ & MNT_VISFLAGMASK); error = VFS_STATFS(mp, sp); if (error) goto out; @@ -409,6 +411,8 @@ kern_fstatfs(struct thread *td, int fd, struct sta sp->f_version = STATFS_VERSION; sp->f_namemax = NAME_MAX; sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + if (mp->mnt_kern_flag & MNTK_SUJ) + sp->f_flags |= (MNT_SUJ & MNT_VISFLAGMASK); error = VFS_STATFS(mp, sp); if (error) goto out; @@ -509,6 +513,8 @@ kern_getfsstat(struct thread *td, struct statfs ** sp->f_version = STATFS_VERSION; sp->f_namemax = NAME_MAX; sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + if (mp->mnt_kern_flag & MNTK_SUJ) + sp->f_flags |= (MNT_SUJ & MNT_VISFLAGMASK); /* * If MNT_NOWAIT or MNT_LAZY is specified, do not * refresh the fsstat cache. MNT_NOWAIT or MNT_LAZY @@ -4660,6 +4666,8 @@ kern_fhstatfs(struct thread *td, fhandle_t fh, str sp->f_version = STATFS_VERSION; sp->f_namemax = NAME_MAX; sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + if (mp->mnt_kern_flag & MNTK_SUJ) + sp->f_flags |= (MNT_SUJ & MNT_VISFLAGMASK); error = VFS_STATFS(mp, sp); if (error == 0) *buf = *sp;