Module Name:    src
Committed By:   christos
Date:           Mon Sep 23 12:00:58 UTC 2019

Modified Files:
        src/lib/libp2k: p2k.c
        src/lib/libperfuse: ops.c perfuse_priv.h
        src/lib/libpuffs: null.c puffs.h subr.c
        src/lib/librefuse: refuse.c
        src/sys/fs/puffs: puffs_msgif.h puffs_vfsops.c
        src/tests/fs/puffs/h_dtfs: dtfs_vfsops.c
        src/usr.sbin/puffs/mount_psshfs: fs.c

Log Message:
Restore binary compatibility by using the statvfs90 structure internally.


To generate a diff of this commit:
cvs rdiff -u -r1.70 -r1.71 src/lib/libp2k/p2k.c
cvs rdiff -u -r1.87 -r1.88 src/lib/libperfuse/ops.c
cvs rdiff -u -r1.37 -r1.38 src/lib/libperfuse/perfuse_priv.h
cvs rdiff -u -r1.33 -r1.34 src/lib/libpuffs/null.c
cvs rdiff -u -r1.127 -r1.128 src/lib/libpuffs/puffs.h
cvs rdiff -u -r1.27 -r1.28 src/lib/libpuffs/subr.c
cvs rdiff -u -r1.100 -r1.101 src/lib/librefuse/refuse.c
cvs rdiff -u -r1.84 -r1.85 src/sys/fs/puffs/puffs_msgif.h
cvs rdiff -u -r1.121 -r1.122 src/sys/fs/puffs/puffs_vfsops.c
cvs rdiff -u -r1.3 -r1.4 src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c
cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/puffs/mount_psshfs/fs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libp2k/p2k.c
diff -u src/lib/libp2k/p2k.c:1.70 src/lib/libp2k/p2k.c:1.71
--- src/lib/libp2k/p2k.c:1.70	Tue Apr 25 23:02:48 2017
+++ src/lib/libp2k/p2k.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: p2k.c,v 1.70 2017/04/26 03:02:48 riastradh Exp $	*/
+/*	$NetBSD: p2k.c,v 1.71 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2007, 2008, 2009  Antti Kantee.  All Rights Reserved.
@@ -157,7 +157,7 @@ static volatile sig_atomic_t dodump;
 static void
 dumpmp(struct puffs_usermount *pu)
 {
-	struct statvfs svfsb;
+	struct puffs_statvfs svfsb;
 
 	if (dodump && p2k_fs_statvfs(pu, &svfsb) == 0) {
 		rump_pub_vfs_mount_print(svfsb.f_mntonname, dodump-1);
@@ -586,12 +586,14 @@ p2k_setup_diskfs(struct p2k_mount *p2m, 
 }
 
 int
-p2k_fs_statvfs(struct puffs_usermount *pu, struct statvfs *sbp)
+p2k_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *sbp)
 {
 	struct p2k_mount *p2m = puffs_getspecific(pu);
 	struct mount *mp = p2m->p2m_mp;
+	struct statvfs sb;
+	puffs_statvfs_to_statvfs(sbp, &sb);
 
-	return rump_pub_vfs_statvfs(mp, sbp);
+	return rump_pub_vfs_statvfs(mp, &sb);
 }
 
 /*ARGSUSED*/
@@ -606,7 +608,7 @@ p2k_fs_unmount(struct puffs_usermount *p
 
 	if (fs) {
 		if (ukfs_release(fs, 0) != 0) {
-			struct statvfs svfsb;
+			struct puffs_statvfs svfsb;
 
 			if (p2m->p2m_hasdebug
 			    && p2k_fs_statvfs(pu, &svfsb) == 0) {

Index: src/lib/libperfuse/ops.c
diff -u src/lib/libperfuse/ops.c:1.87 src/lib/libperfuse/ops.c:1.88
--- src/lib/libperfuse/ops.c:1.87	Sat Aug 10 03:08:11 2019
+++ src/lib/libperfuse/ops.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*  $NetBSD: ops.c,v 1.87 2019/08/10 07:08:11 manu Exp $ */
+/*  $NetBSD: ops.c,v 1.88 2019/09/23 12:00:57 christos Exp $ */
 
 /*-
  *  Copyright (c) 2010-2011 Emmanuel Dreyfus. All rights reserved.
@@ -955,7 +955,7 @@ perfuse_fs_unmount(struct puffs_usermoun
 }
 
 int
-perfuse_fs_statvfs(struct puffs_usermount *pu, struct statvfs *svfsb)
+perfuse_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *svfsb)
 {
 	struct perfuse_state *ps;
 	perfuse_msg_t *pm;

Index: src/lib/libperfuse/perfuse_priv.h
diff -u src/lib/libperfuse/perfuse_priv.h:1.37 src/lib/libperfuse/perfuse_priv.h:1.38
--- src/lib/libperfuse/perfuse_priv.h:1.37	Thu Nov 15 21:39:02 2018
+++ src/lib/libperfuse/perfuse_priv.h	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*  $NetBSD: perfuse_priv.h,v 1.37 2018/11/16 02:39:02 manu Exp $ */
+/*  $NetBSD: perfuse_priv.h,v 1.38 2019/09/23 12:00:57 christos Exp $ */
 
 /*-
  *  Copyright (c) 2010-2011 Emmanuel Dreyfus. All rights reserved.
@@ -195,7 +195,7 @@ char *perfuse_fs_mount(int, ssize_t);
  * ops.c - filesystem operations
  */
 int perfuse_fs_unmount(struct puffs_usermount *, int);
-int perfuse_fs_statvfs(struct puffs_usermount *, struct statvfs *);
+int perfuse_fs_statvfs(struct puffs_usermount *, struct puffs_statvfs *);
 int perfuse_fs_sync(struct puffs_usermount *, int,
     const struct puffs_cred *);
 int perfuse_fs_fhtonode(struct puffs_usermount *, void *, size_t,

Index: src/lib/libpuffs/null.c
diff -u src/lib/libpuffs/null.c:1.33 src/lib/libpuffs/null.c:1.34
--- src/lib/libpuffs/null.c:1.33	Fri Nov 25 10:02:02 2011
+++ src/lib/libpuffs/null.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: null.c,v 1.33 2011/11/25 15:02:02 manu Exp $	*/
+/*	$NetBSD: null.c,v 1.34 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2007  Antti Kantee.  All Rights Reserved.
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #if !defined(lint)
-__RCSID("$NetBSD: null.c,v 1.33 2011/11/25 15:02:02 manu Exp $");
+__RCSID("$NetBSD: null.c,v 1.34 2019/09/23 12:00:57 christos Exp $");
 #endif /* !lint */
 
 /*
@@ -191,11 +191,12 @@ puffs_null_setops(struct puffs_ops *pops
 
 /*ARGSUSED*/
 int
-puffs_null_fs_statvfs(struct puffs_usermount *pu, struct statvfs *svfsb)
+puffs_null_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *svfsb)
 {
-
-	if (statvfs(PNPATH(puffs_getroot(pu)), svfsb) == -1)
+	struct statvfs sb;
+	if (statvfs(PNPATH(puffs_getroot(pu)), &sb) == -1)
 		return errno;
+	statvfs_to_puffs_statvfs(&sb, svfsb);
 
 	return 0;
 }

Index: src/lib/libpuffs/puffs.h
diff -u src/lib/libpuffs/puffs.h:1.127 src/lib/libpuffs/puffs.h:1.128
--- src/lib/libpuffs/puffs.h:1.127	Thu Nov 12 12:51:05 2015
+++ src/lib/libpuffs/puffs.h	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs.h,v 1.127 2015/11/12 17:51:05 christos Exp $	*/
+/*	$NetBSD: puffs.h,v 1.128 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -162,7 +162,8 @@ extern const struct mntopt puffsmopts[];
 /* callbacks for operations */
 struct puffs_ops {
 	int (*puffs_fs_unmount)(struct puffs_usermount *, int);
-	int (*puffs_fs_statvfs)(struct puffs_usermount *, struct statvfs *);
+	int (*puffs_fs_statvfs)(struct puffs_usermount *,
+	    struct puffs_statvfs *);
 	int (*puffs_fs_sync)(struct puffs_usermount *, int,
 	    const struct puffs_cred *);
 	int (*puffs_fs_fhtonode)(struct puffs_usermount *, void *, size_t,
@@ -316,7 +317,7 @@ enum {
 #define PUFFSOP_PROTOS(fsname)						\
 	int fsname##_fs_unmount(struct puffs_usermount *, int);		\
 	int fsname##_fs_statvfs(struct puffs_usermount *,		\
-	    struct statvfs *);						\
+	    struct puffs_statvfs *);					\
 	int fsname##_fs_sync(struct puffs_usermount *, int,		\
 	    const struct puffs_cred *cred);				\
 	int fsname##_fs_fhtonode(struct puffs_usermount *, void *,	\
@@ -559,8 +560,8 @@ int			puffs_dispatch_exec(struct puffs_c
  * generic/dummy routines applicable for some file systems
  */
 int  puffs_fsnop_unmount(struct puffs_usermount *, int);
-int  puffs_fsnop_statvfs(struct puffs_usermount *, struct statvfs *);
-void puffs_zerostatvfs(struct statvfs *);
+int  puffs_fsnop_statvfs(struct puffs_usermount *, struct puffs_statvfs *);
+void puffs_zerostatvfs(struct puffs_statvfs *);
 int  puffs_fsnop_sync(struct puffs_usermount *, int waitfor,
 		      const struct puffs_cred *);
 

Index: src/lib/libpuffs/subr.c
diff -u src/lib/libpuffs/subr.c:1.27 src/lib/libpuffs/subr.c:1.28
--- src/lib/libpuffs/subr.c:1.27	Thu Feb 17 12:55:36 2011
+++ src/lib/libpuffs/subr.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr.c,v 1.27 2011/02/17 17:55:36 pooka Exp $	*/
+/*	$NetBSD: subr.c,v 1.28 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2006 Antti Kantee.  All Rights Reserved.
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #if !defined(lint)
-__RCSID("$NetBSD: subr.c,v 1.27 2011/02/17 17:55:36 pooka Exp $");
+__RCSID("$NetBSD: subr.c,v 1.28 2019/09/23 12:00:57 christos Exp $");
 #endif /* !lint */
 
 #include <sys/types.h>
@@ -99,7 +99,7 @@ puffs_fsnop_sync(struct puffs_usermount 
 
 /*ARGSUSED*/
 int
-puffs_fsnop_statvfs(struct puffs_usermount *dontuse1, struct statvfs *sbp)
+puffs_fsnop_statvfs(struct puffs_usermount *dontuse1, struct puffs_statvfs *sbp)
 {
 
 	sbp->f_bsize = sbp->f_frsize = sbp->f_iosize = DEV_BSIZE;
@@ -142,7 +142,7 @@ puffs_genfs_node_reclaim(struct puffs_us
  * NULLs from application code
  */
 void
-puffs_zerostatvfs(struct statvfs *sbp)
+puffs_zerostatvfs(struct puffs_statvfs *sbp)
 {
 
 	puffs_fsnop_statvfs(NULL, sbp);

Index: src/lib/librefuse/refuse.c
diff -u src/lib/librefuse/refuse.c:1.100 src/lib/librefuse/refuse.c:1.101
--- src/lib/librefuse/refuse.c:1.100	Wed Apr 10 17:42:52 2019
+++ src/lib/librefuse/refuse.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: refuse.c,v 1.100 2019/04/10 21:42:52 maya Exp $	*/
+/*	$NetBSD: refuse.c,v 1.101 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright © 2007 Alistair Crooks.  All rights reserved.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if !defined(lint)
-__RCSID("$NetBSD: refuse.c,v 1.100 2019/04/10 21:42:52 maya Exp $");
+__RCSID("$NetBSD: refuse.c,v 1.101 2019/09/23 12:00:57 christos Exp $");
 #endif /* !lint */
 
 #include <sys/types.h>
@@ -1100,19 +1100,21 @@ puffs_fuse_fs_sync(struct puffs_usermoun
 
 /* ARGSUSED2 */
 static int
-puffs_fuse_fs_statvfs(struct puffs_usermount *pu, struct statvfs *svfsb)
+puffs_fuse_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *svfsb)
 {
 	struct fuse		*fuse;
 	int			ret;
+	struct statvfs		sb;
 
 	fuse = puffs_getspecific(pu);
 	if (fuse->op.statfs == NULL) {
-		if ((ret = statvfs(PNPATH(puffs_getroot(pu)), svfsb)) == -1) {
+		if ((ret = statvfs(PNPATH(puffs_getroot(pu)), &sb)) == -1) {
 			return errno;
 		}
 	} else {
-		ret = fuse->op.statfs(PNPATH(puffs_getroot(pu)), svfsb);
+		ret = fuse->op.statfs(PNPATH(puffs_getroot(pu)), &sb);
 	}
+	statvfs_to_puffs_statvfs(&sb, svfsb);
 
         return -ret;
 }
@@ -1200,7 +1202,7 @@ int fuse_mount(struct fuse *fuse, const 
 	struct puffs_node	*pn_root;
 	struct refusenode	*rn_root;
 	struct stat		 st;
-	struct statvfs		 svfsb;
+	struct puffs_statvfs	 svfsb;
 
 	pn_root = newrn(fuse->pu);
 	puffs_setroot(fuse->pu, pn_root);

Index: src/sys/fs/puffs/puffs_msgif.h
diff -u src/sys/fs/puffs/puffs_msgif.h:1.84 src/sys/fs/puffs/puffs_msgif.h:1.85
--- src/sys/fs/puffs/puffs_msgif.h:1.84	Sun Feb 15 15:21:29 2015
+++ src/sys/fs/puffs/puffs_msgif.h	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_msgif.h,v 1.84 2015/02/15 20:21:29 manu Exp $	*/
+/*	$NetBSD: puffs_msgif.h,v 1.85 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -112,6 +112,119 @@ enum {
 #define PUFFS_TYPELEN (_VFS_NAMELEN - (sizeof(PUFFS_TYPEPREFIX)+1))
 #define PUFFS_NAMELEN (_VFS_MNAMELEN-1)
 
+/* really statvfs90 */
+struct puffs_statvfs {
+	unsigned long	f_flag;		/* copy of mount exported flags */
+	unsigned long	f_bsize;	/* file system block size */
+	unsigned long	f_frsize;	/* fundamental file system block size */
+	unsigned long	f_iosize;	/* optimal file system block size */
+
+	/* The following are in units of f_frsize */
+	fsblkcnt_t	f_blocks;	/* number of blocks in file system, */
+	fsblkcnt_t	f_bfree;	/* free blocks avail in file system */
+	fsblkcnt_t	f_bavail;	/* free blocks avail to non-root */
+	fsblkcnt_t	f_bresvd;	/* blocks reserved for root */
+
+	fsfilcnt_t	f_files;	/* total file nodes in file system */
+	fsfilcnt_t	f_ffree;	/* free file nodes in file system */
+	fsfilcnt_t	f_favail;	/* free file nodes avail to non-root */
+	fsfilcnt_t	f_fresvd;	/* file nodes reserved for root */
+
+	uint64_t  	f_syncreads;	/* count of sync reads since mount */
+	uint64_t  	f_syncwrites;	/* count of sync writes since mount */
+
+	uint64_t  	f_asyncreads;	/* count of async reads since mount */
+	uint64_t  	f_asyncwrites;	/* count of async writes since mount */
+
+	fsid_t		f_fsidx;	/* NetBSD compatible fsid */
+	unsigned long	f_fsid;		/* Posix compatible fsid */
+	unsigned long	f_namemax;	/* maximum filename length */
+	uid_t		f_owner;	/* user that mounted the file system */
+
+	uint32_t	f_spare[4];	/* spare space */
+
+	char	f_fstypename[_VFS_NAMELEN]; /* fs type name */
+	char	f_mntonname[_VFS_MNAMELEN];  /* directory on which mounted */
+	char	f_mntfromname[_VFS_MNAMELEN];  /* mounted file system */
+};
+
+#ifndef _KERNEL
+#include <string.h>
+#endif
+
+static __inline void
+statvfs_to_puffs_statvfs(const struct statvfs *s, struct puffs_statvfs *ps)
+{
+	ps->f_flag = s->f_flag;
+	ps->f_bsize = s->f_bsize;
+	ps->f_frsize = s->f_frsize;
+	ps->f_iosize = s->f_iosize;
+
+	ps->f_blocks = s->f_blocks;
+	ps->f_bfree = s->f_bfree;
+	ps->f_bavail = s->f_bavail;
+	ps->f_bresvd = s->f_bresvd;
+
+	ps->f_files = s->f_files;
+	ps->f_ffree = s->f_ffree;
+	ps->f_favail = s->f_favail;
+	ps->f_fresvd = s->f_fresvd;
+
+	ps->f_syncreads = s->f_syncreads;
+	ps->f_syncwrites = s->f_syncwrites;
+
+	ps->f_asyncreads = s->f_asyncreads;
+	ps->f_asyncwrites = s->f_asyncwrites;
+
+	ps->f_fsidx = s->f_fsidx;
+	ps->f_fsid = s->f_fsid;
+	ps->f_namemax = s->f_namemax;
+	ps->f_owner = s->f_owner;
+
+	memset(ps->f_spare, 0, sizeof(ps->f_spare));
+
+	memcpy(ps->f_fstypename, s->f_fstypename, sizeof(ps->f_fstypename));
+	memcpy(ps->f_mntonname, s->f_mntonname, sizeof(ps->f_mntonname));
+	memcpy(ps->f_mntfromname, s->f_mntfromname, sizeof(ps->f_mntfromname));
+}
+
+static __inline void
+puffs_statvfs_to_statvfs(const struct puffs_statvfs *ps, struct statvfs *s)
+{
+	s->f_flag = ps->f_flag;
+	s->f_bsize = ps->f_bsize;
+	s->f_frsize = ps->f_frsize;
+	s->f_iosize = ps->f_iosize;
+
+	s->f_blocks = ps->f_blocks;
+	s->f_bfree = ps->f_bfree;
+	s->f_bavail = ps->f_bavail;
+	s->f_bresvd = ps->f_bresvd;
+
+	s->f_files = ps->f_files;
+	s->f_ffree = ps->f_ffree;
+	s->f_favail = ps->f_favail;
+	s->f_fresvd = ps->f_fresvd;
+
+	s->f_syncreads = ps->f_syncreads;
+	s->f_syncwrites = ps->f_syncwrites;
+
+	s->f_asyncreads = ps->f_asyncreads;
+	s->f_asyncwrites = ps->f_asyncwrites;
+
+	s->f_fsidx = ps->f_fsidx;
+	s->f_fsid = ps->f_fsid;
+	s->f_namemax = ps->f_namemax;
+	s->f_owner = ps->f_owner;
+
+	memset(s->f_spare, 0, sizeof(s->f_spare));
+
+	memcpy(s->f_fstypename, ps->f_fstypename, sizeof(s->f_fstypename));
+	memcpy(s->f_mntonname, ps->f_mntonname, sizeof(s->f_mntonname));
+	memcpy(s->f_mntfromname, ps->f_mntfromname, sizeof(s->f_mntfromname));
+	memset(s->f_mntfromlabel, 0, sizeof(s->f_mntfromlabel));
+}
+
 /* 
  * Just a weak typedef for code clarity.  Additionally, we have a
  * more appropriate vanity type for puffs:
@@ -145,7 +258,7 @@ struct puffs_kargs {
 		uint64_t	container;
 	} devunion;
 
-	struct statvfs	pa_svfsb;
+	struct puffs_statvfs	pa_svfsb;
 
 	uint32_t	pa_time32;
 
@@ -296,7 +409,7 @@ struct puffs_vfsmsg_unmount {
 struct puffs_vfsmsg_statvfs {
 	struct puffs_req	pvfsr_pr;
 
-	struct statvfs		pvfsr_sb;
+	struct puffs_statvfs	pvfsr_sb;
 };
 
 struct puffs_vfsmsg_sync {

Index: src/sys/fs/puffs/puffs_vfsops.c
diff -u src/sys/fs/puffs/puffs_vfsops.c:1.121 src/sys/fs/puffs/puffs_vfsops.c:1.122
--- src/sys/fs/puffs/puffs_vfsops.c:1.121	Mon May 28 17:04:37 2018
+++ src/sys/fs/puffs/puffs_vfsops.c	Mon Sep 23 08:00:57 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_vfsops.c,v 1.121 2018/05/28 21:04:37 chs Exp $	*/
+/*	$NetBSD: puffs_vfsops.c,v 1.122 2019/09/23 12:00:57 christos Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_vfsops.c,v 1.121 2018/05/28 21:04:37 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_vfsops.c,v 1.122 2019/09/23 12:00:57 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -216,8 +216,12 @@ puffs_vfsop_mount(struct mount *mp, cons
 	 * after VFS_MOUNT() because we'd deadlock, so handle it
 	 * here already.
 	 */
-	copy_statvfs_info(&args->pa_svfsb, mp);
-	(void)memcpy(&mp->mnt_stat, &args->pa_svfsb, sizeof(mp->mnt_stat));
+	struct statvfs *sb = STATVFSBUF_GET();
+	puffs_statvfs_to_statvfs(&args->pa_svfsb, sb);
+	copy_statvfs_info(sb, mp);
+	STATVFSBUF_PUT(sb);
+
+	statvfs_to_puffs_statvfs(&mp->mnt_stat, &args->pa_svfsb);
 
 	KASSERT(curlwp != uvm.pagedaemon_lwp);
 	pmp = kmem_zalloc(sizeof(struct puffs_mount), KM_SLEEP);
@@ -498,9 +502,11 @@ puffs_vfsop_statvfs(struct mount *mp, st
 	 * XXX: cache the copy in non-error case
 	 */
 	if (!error) {
-		copy_statvfs_info(&statvfs_msg->pvfsr_sb, mp);
-		(void)memcpy(sbp, &statvfs_msg->pvfsr_sb,
-		    sizeof(struct statvfs));
+		struct statvfs *sb = STATVFSBUF_GET();
+		puffs_statvfs_to_statvfs(&statvfs_msg->pvfsr_sb, sb);
+		copy_statvfs_info(sb, mp);
+		STATVFSBUF_PUT(sb);
+		statvfs_to_puffs_statvfs(sbp, &statvfs_msg->pvfsr_sb);
 	} else {
 		copy_statvfs_info(sbp, mp);
 	}

Index: src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c
diff -u src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c:1.3 src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c:1.4
--- src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c:1.3	Sun Nov  4 18:37:02 2012
+++ src/tests/fs/puffs/h_dtfs/dtfs_vfsops.c	Mon Sep 23 08:00:58 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtfs_vfsops.c,v 1.3 2012/11/04 23:37:02 christos Exp $	*/
+/*	$NetBSD: dtfs_vfsops.c,v 1.4 2019/09/23 12:00:58 christos Exp $	*/
 
 /*
  * Copyright (c) 2006  Antti Kantee.  All Rights Reserved.
@@ -192,7 +192,7 @@ dtfs_domount(struct puffs_usermount *pu,
 #define ROUND(a,b) (((a) + ((b)-1)) & ~((b)-1))
 #define NFILES 1024*1024
 int
-dtfs_fs_statvfs(struct puffs_usermount *pu, struct statvfs *sbp)
+dtfs_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *sbp)
 {
 	struct rlimit rlim;
 	struct dtfs_mount *dtm;
@@ -201,7 +201,7 @@ dtfs_fs_statvfs(struct puffs_usermount *
 
 	dtm = puffs_getspecific(pu);
 	pgsize = getpagesize();
-	memset(sbp, 0, sizeof(struct statvfs));
+	memset(sbp, 0, sizeof(struct puffs_statvfs));
 
 	/*
 	 * Use datasize rlimit as an _approximation_ for free size.

Index: src/usr.sbin/puffs/mount_psshfs/fs.c
diff -u src/usr.sbin/puffs/mount_psshfs/fs.c:1.24 src/usr.sbin/puffs/mount_psshfs/fs.c:1.25
--- src/usr.sbin/puffs/mount_psshfs/fs.c:1.24	Wed Jun 22 00:03:23 2011
+++ src/usr.sbin/puffs/mount_psshfs/fs.c	Mon Sep 23 08:00:58 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: fs.c,v 1.24 2011/06/22 04:03:23 mrg Exp $	*/
+/*	$NetBSD: fs.c,v 1.25 2019/09/23 12:00:58 christos Exp $	*/
 
 /*
  * Copyright (c) 2006-2009  Antti Kantee.  All Rights Reserved.
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: fs.c,v 1.24 2011/06/22 04:03:23 mrg Exp $");
+__RCSID("$NetBSD: fs.c,v 1.25 2019/09/23 12:00:58 christos Exp $");
 #endif /* !lint */
 
 #include <err.h>
@@ -171,7 +171,7 @@ psshfs_handshake(struct puffs_usermount 
 }
 
 int
-psshfs_fs_statvfs(struct puffs_usermount *pu, struct statvfs *sbp)
+psshfs_fs_statvfs(struct puffs_usermount *pu, struct puffs_statvfs *sbp)
 {
 	PSSHFSAUTOVAR(pu);
 	uint64_t tmpval;

Reply via email to