Index: head/sys/kern/vfs_mount.c =================================================================== --- head/sys/kern/vfs_mount.c +++ head/sys/kern/vfs_mount.c @@ -1831,12 +1831,15 @@ int __vfs_statfs(struct mount *mp, struct statfs *sbp) { - int error; - error = mp->mnt_op->vfs_statfs(mp, &mp->mnt_stat); - if (sbp != &mp->mnt_stat) - *sbp = mp->mnt_stat; - return (error); + /* + * Set these in case the underlying filesystem fails to do so. + */ + sbp->f_version = STATFS_VERSION; + sbp->f_namemax = NAME_MAX; + sbp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + + return (mp->mnt_op->vfs_statfs(mp, sbp)); } void Index: head/sys/kern/vfs_syscalls.c =================================================================== --- head/sys/kern/vfs_syscalls.c +++ head/sys/kern/vfs_syscalls.c @@ -248,7 +248,6 @@ static int kern_do_statfs(struct thread *td, struct mount *mp, struct statfs *buf) { - struct statfs *sp; int error; if (mp == NULL) @@ -262,17 +261,9 @@ if (error != 0) goto out; #endif - /* - * Set these in case the underlying filesystem fails to do so. - */ - sp = &mp->mnt_stat; - sp->f_version = STATFS_VERSION; - sp->f_namemax = NAME_MAX; - sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - error = VFS_STATFS(mp, sp); + error = VFS_STATFS(mp, buf); if (error != 0) goto out; - *buf = *sp; if (priv_check(td, PRIV_VFS_GENERATION)) { buf->f_fsid.val[0] = buf->f_fsid.val[1] = 0; prison_enforce_statfs(td->td_ucred, mp, buf); @@ -476,13 +467,6 @@ if (sfsp != NULL && count < maxcount) { sp = &mp->mnt_stat; /* - * Set these in case the underlying filesystem - * fails to do so. - */ - sp->f_version = STATFS_VERSION; - sp->f_namemax = NAME_MAX; - sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - /* * If MNT_NOWAIT is specified, do not refresh * the fsstat cache. */ @@ -4545,7 +4529,6 @@ int kern_fhstatfs(struct thread *td, fhandle_t fh, struct statfs *buf) { - struct statfs *sp; struct mount *mp; struct vnode *vp; int error; @@ -4569,16 +4552,7 @@ if (error != 0) goto out; #endif - /* - * Set these in case the underlying filesystem fails to do so. - */ - sp = &mp->mnt_stat; - sp->f_version = STATFS_VERSION; - sp->f_namemax = NAME_MAX; - sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; - error = VFS_STATFS(mp, sp); - if (error == 0) - *buf = *sp; + error = VFS_STATFS(mp, buf); out: vfs_unbusy(mp); return (error);