summaryrefslogtreecommitdiffstats
path: root/sys/miscfs
diff options
context:
space:
mode:
authornatano <natano@openbsd.org>2016-04-26 18:37:02 +0000
committernatano <natano@openbsd.org>2016-04-26 18:37:02 +0000
commitf28dec03d114e4a09d295f18e38402d6215a0bbe (patch)
tree2da439041a392e1e81cd47c1d2cc32c999ff7af9 /sys/miscfs
parentunwanted .El; (diff)
downloadwireguard-openbsd-f28dec03d114e4a09d295f18e38402d6215a0bbe.tar.xz
wireguard-openbsd-f28dec03d114e4a09d295f18e38402d6215a0bbe.zip
Populate all necessary statfs members in .vfs_statfs. cd9660, udf,
msdosfs and nfsv2 don't set f_namemax. ntfs and ext2fs don't set f_namemeax and f_favail. fusefs doesn't set f_mntfromspec, f_favail and f_iosize. Also, make all filesystems use copy_statfs_info(), so that all statfs information is filled in correctly for the (sb != &mp->mnt-stat) case. ok stefan
Diffstat (limited to 'sys/miscfs')
-rw-r--r--sys/miscfs/fuse/fuse_vfsops.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/miscfs/fuse/fuse_vfsops.c b/sys/miscfs/fuse/fuse_vfsops.c
index 9f9541bbb5d..36584775d63 100644
--- a/sys/miscfs/fuse/fuse_vfsops.c
+++ b/sys/miscfs/fuse/fuse_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_vfsops.c,v 1.20 2016/03/27 11:39:37 bluhm Exp $ */
+/* $OpenBSD: fuse_vfsops.c,v 1.21 2016/04/26 18:37:02 natano Exp $ */
/*
* Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
*
@@ -111,7 +111,9 @@ fusefs_mount(struct mount *mp, const char *path, void *data,
bzero(mp->mnt_stat.f_mntonname, MNAMELEN);
strlcpy(mp->mnt_stat.f_mntonname, path, MNAMELEN);
bzero(mp->mnt_stat.f_mntfromname, MNAMELEN);
- bcopy("fusefs", mp->mnt_stat.f_mntfromname, sizeof("fusefs"));
+ strlcpy(mp->mnt_stat.f_mntfromname, "fusefs", MNAMELEN);
+ bzero(mp->mnt_stat.f_mntfromspec, MNAMELEN);
+ strlcpy(mp->mnt_stat.f_mntfromspec, "fusefs", MNAMELEN);
fuse_device_set_fmp(fmp, 1);
fbuf = fb_setup(0, 0, FBT_INIT, p);
@@ -204,6 +206,8 @@ fusefs_statfs(struct mount *mp, struct statfs *sbp, struct proc *p)
fmp = VFSTOFUSEFS(mp);
+ copy_statfs_info(sbp, mp);
+
if (fmp->sess_init) {
fbuf = fb_setup(0, FUSE_ROOT_ID, FBT_STATFS, p);
@@ -219,7 +223,9 @@ fusefs_statfs(struct mount *mp, struct statfs *sbp, struct proc *p)
sbp->f_blocks = fbuf->fb_stat.f_blocks;
sbp->f_files = fbuf->fb_stat.f_files;
sbp->f_ffree = fbuf->fb_stat.f_ffree;
+ sbp->f_favail = fbuf->fb_stat.f_favail;
sbp->f_bsize = fbuf->fb_stat.f_frsize;
+ sbp->f_iosize = fbuf->fb_stat.f_bsize;
sbp->f_namemax = fbuf->fb_stat.f_namemax;
fb_delete(fbuf);
} else {
@@ -227,8 +233,10 @@ fusefs_statfs(struct mount *mp, struct statfs *sbp, struct proc *p)
sbp->f_bfree = 0;
sbp->f_blocks = 0;
sbp->f_ffree = 0;
+ sbp->f_favail = 0;
sbp->f_files = 0;
sbp->f_bsize = 0;
+ sbp->f_iosize = 0;
sbp->f_namemax = 0;
}