socsvn commit: r224525 - in soc2011/gk/ino64-head: lib/libc/gen lib/libc/include lib/libc/sys sys/compat/freebsd32 sys/compat/linux sys/compat/svr4 sys/fs/nfs sys/fs/nfsserver sys/fs/nullfs sys/fs/...

gk at FreeBSD.org gk at FreeBSD.org
Mon Jul 25 06:53:27 UTC 2011


Author: gk
Date: Mon Jul 25 06:53:25 2011
New Revision: 224525
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224525

Log:
  Increase MNAMELEN to 1024, add compatibility shims
  
  Malloc struct statfs in kernel, it became too big to be placed on stack
  
  Leave MFSNAMELEN untouched, otherwise compatibility shims for several
  sysctls have to be implemented.

Added:
  soc2011/gk/ino64-head/lib/libc/gen/getmntinfo-compat8.c
     - copied, changed from r224306, soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h
Modified:
  soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc
  soc2011/gk/ino64-head/lib/libc/gen/Symbol.map
  soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h
  soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c
  soc2011/gk/ino64-head/lib/libc/gen/fts-compat8.c
  soc2011/gk/ino64-head/lib/libc/include/compat.h
  soc2011/gk/ino64-head/lib/libc/sys/Symbol.map
  soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h
  soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c
  soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master
  soc2011/gk/ino64-head/sys/compat/linux/linux_stats.c
  soc2011/gk/ino64-head/sys/compat/svr4/svr4_misc.c
  soc2011/gk/ino64-head/sys/fs/nfs/nfs_commonsubs.c
  soc2011/gk/ino64-head/sys/fs/nfsserver/nfs_nfsdserv.c
  soc2011/gk/ino64-head/sys/fs/nullfs/null_vfsops.c
  soc2011/gk/ino64-head/sys/fs/unionfs/union_vfsops.c
  soc2011/gk/ino64-head/sys/i386/ibcs2/ibcs2_stat.c
  soc2011/gk/ino64-head/sys/kern/kern_acct.c
  soc2011/gk/ino64-head/sys/kern/syscalls.master
  soc2011/gk/ino64-head/sys/kern/vfs_default.c
  soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c
  soc2011/gk/ino64-head/sys/nfsserver/nfs_serv.c
  soc2011/gk/ino64-head/sys/sys/mount.h

Modified: soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc	Mon Jul 25 06:53:25 2011	(r224525)
@@ -15,7 +15,8 @@
 	fpclassify.c frexp.c fstab.c ftok.c fts.c fts-compat.c fts-compat8.c \
 	ftw.c ftw-compat8.c getbootfile.c getbsize.c \
 	getcap.c getcwd.c getdomainname.c getgrent.c getgrouplist.c \
-	gethostname.c getloadavg.c getlogin.c getmntinfo.c getnetgrent.c \
+	gethostname.c getloadavg.c getlogin.c \
+	getmntinfo.c getmntinfo-compat8.c getnetgrent.c \
 	getosreldate.c getpagesize.c getpagesizes.c \
 	getpeereid.c getprogname.c getpwent.c getttyent.c \
 	getusershell.c getutxent.c getvfsbyname.c glob.c glob-compat8.c \

Modified: soc2011/gk/ino64-head/lib/libc/gen/Symbol.map
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/Symbol.map	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/gen/Symbol.map	Mon Jul 25 06:53:25 2011	(r224525)
@@ -166,7 +166,6 @@
 	getloadavg;
 	getlogin;
 	getlogin_r;
-	getmntinfo;
 	setnetgrent;
 	getnetgrent;
 	endnetgrent;
@@ -355,6 +354,7 @@
 	fts_set;
 	fts_set_clientptr;
 	ftw;
+	getmntinfo;
 	getpagesizes;
 	getutxent;
 	getutxid;

Modified: soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h	Mon Jul 25 06:53:25 2011	(r224525)
@@ -30,11 +30,15 @@
 #ifndef	_DIRENT_COMPAT_H_
 #define	_DIRENT_COMPAT_H_
 
+#include <dirent.h>
+
 #define FREEBSD8_DIRSIZ(dp)						\
 	(sizeof(struct freebsd8_dirent) - sizeof((dp)->d_name) +	\
 	    (((dp)->d_namlen + 1 + 3) &~ 3))
 
+struct freebsd8_dirent;
 struct freebsd8_stat;
+struct freebsd8_statfs;
 
 struct freebsd8_dirent *freebsd8_readdir(DIR *);
 int	freebsd8_readdir_r(DIR *, struct freebsd8_dirent *,
@@ -43,4 +47,8 @@
 int	freebsd8_lstat(const char *, struct freebsd8_stat *);
 int	freebsd8_fstat(int, struct freebsd8_stat *);
 
+int	freebsd8_statfs(const char *, struct freebsd8_statfs *);
+int	freebsd8_getfsstat(struct freebsd8_statfs *, long, int);
+int	freebsd8_getmntinfo(struct freebsd8_statfs **, int);
+
 #endif /* _DIRENT_COMPAT_H_ */

Modified: soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -97,7 +97,7 @@
  */
 struct _fts_private {
 	FTS		ftsp_fts;
-	struct statfs	ftsp_statfs;
+	struct freebsd8_statfs	ftsp_statfs;
 	dev_t		ftsp_dev;
 	int		ftsp_linksreliable;
 };
@@ -1219,7 +1219,7 @@
 	 * avoidance.
 	 */
 	if (priv->ftsp_dev != ent->fts_dev) {
-		if (statfs(ent->fts_path, &priv->ftsp_statfs) != -1) {
+		if (freebsd8_statfs(ent->fts_path, &priv->ftsp_statfs) != -1) {
 			priv->ftsp_dev = ent->fts_dev;
 			priv->ftsp_linksreliable = 0;
 			for (cpp = ufslike_filesystems; *cpp; cpp++) {

Modified: soc2011/gk/ino64-head/lib/libc/gen/fts-compat8.c
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/fts-compat8.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/gen/fts-compat8.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -85,7 +85,7 @@
  */
 struct _fts_private {
 	FTS		ftsp_fts;
-	struct statfs	ftsp_statfs;
+	struct freebsd8_statfs	ftsp_statfs;
 	dev_t		ftsp_dev;
 	int		ftsp_linksreliable;
 };
@@ -1183,7 +1183,7 @@
 	 * avoidance.
 	 */
 	if (priv->ftsp_dev != ent->fts_dev) {
-		if (statfs(ent->fts_path, &priv->ftsp_statfs) != -1) {
+		if (freebsd8_statfs(ent->fts_path, &priv->ftsp_statfs) != -1) {
 			priv->ftsp_dev = ent->fts_dev;
 			priv->ftsp_linksreliable = 0;
 			for (cpp = ufslike_filesystems; *cpp; cpp++) {

Copied and modified: soc2011/gk/ino64-head/lib/libc/gen/getmntinfo-compat8.c (from r224306, soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h)
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/dirent-compat.h	Sat Jul 16 10:43:25 2011	(r224306, copy source)
+++ soc2011/gk/ino64-head/lib/libc/gen/getmntinfo-compat8.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1983, 1993
+ * Copyright (c) 1989, 1993
  *	The Regents of the University of California.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,20 +27,46 @@
  * SUCH DAMAGE.
  */
 
-#ifndef	_DIRENT_COMPAT_H_
-#define	_DIRENT_COMPAT_H_
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getmntinfo.c	8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
 
-#define FREEBSD8_DIRSIZ(dp)						\
-	(sizeof(struct freebsd8_dirent) - sizeof((dp)->d_name) +	\
-	    (((dp)->d_namlen + 1 + 3) &~ 3))
-
-struct freebsd8_stat;
-
-struct freebsd8_dirent *freebsd8_readdir(DIR *);
-int	freebsd8_readdir_r(DIR *, struct freebsd8_dirent *,
-	    struct freebsd8_dirent **);
-int	freebsd8_stat(const char *, struct freebsd8_stat *);
-int	freebsd8_lstat(const char *, struct freebsd8_stat *);
-int	freebsd8_fstat(int, struct freebsd8_stat *);
+#include <sys/param.h>
+#include <sys/ucred.h>
+#include <sys/mount.h>
+#include <stdlib.h>
 
-#endif /* _DIRENT_COMPAT_H_ */
+#include "dirent-compat.h"
+
+/*
+ * Return information about mounted filesystems.
+ */
+int
+freebsd8_getmntinfo(struct freebsd8_statfs **mntbufp, int flags)
+{
+	static struct freebsd8_statfs *mntbuf;
+	static int mntsize;
+	static long bufsize;
+
+	if (mntsize <= 0 &&
+	    (mntsize = freebsd8_getfsstat(0, 0, MNT_NOWAIT)) < 0)
+		return (0);
+	if (bufsize > 0 &&
+	    (mntsize = freebsd8_getfsstat(mntbuf, bufsize, flags)) < 0)
+		return (0);
+	while (bufsize <= mntsize * sizeof(struct freebsd8_statfs)) {
+		if (mntbuf)
+			free(mntbuf);
+		bufsize = (mntsize + 1) * sizeof(struct freebsd8_statfs);
+		if ((mntbuf = (struct freebsd8_statfs *)malloc(bufsize)) == 0)
+			return (0);
+		if ((mntsize = freebsd8_getfsstat(mntbuf, bufsize, flags)) < 0)
+			return (0);
+	}
+	*mntbufp = mntbuf;
+	return (mntsize);
+}
+
+__sym_compat(getmntinfo, freebsd8_getmntinfo, FBSD_1.0);

Modified: soc2011/gk/ino64-head/lib/libc/include/compat.h
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/include/compat.h	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/include/compat.h	Mon Jul 25 06:53:25 2011	(r224525)
@@ -55,6 +55,11 @@
 __sym_compat(getdents, freebsd8_getdents, FBSD_1.0);
 __sym_compat(getdirentries, freebsd8_getdirentries, FBSD_1.0);
 
+__sym_compat(getfsstat, freebsd8_getfsstat, FBSD_1.0);
+__sym_compat(fhstatfs, freebsd8_fhstatfs, FBSD_1.0);
+__sym_compat(fstatfs, freebsd8_fstatfs, FBSD_1.0);
+__sym_compat(statfs, freebsd8_statfs, FBSD_1.0);
+
 #undef __sym_compat
 
 #endif	/* __LIBC_COMPAT_H__ */

Modified: soc2011/gk/ino64-head/lib/libc/sys/Symbol.map
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/sys/Symbol.map	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/lib/libc/sys/Symbol.map	Mon Jul 25 06:53:25 2011	(r224525)
@@ -88,11 +88,9 @@
 	fchown;
 	fcntl;
 	fhopen;
-	fhstatfs;
 	flock;
 	fork;
 	fpathconf;
-	fstatfs;
 	fsync;
 	futimes;
 	getaudit;
@@ -103,7 +101,6 @@
 	getegid;
 	geteuid;
 	getfh;
-	getfsstat;
 	getgid;
 	getgroups;
 	getitimer;
@@ -276,7 +273,6 @@
 	socketpair;
 	__stack_chk_fail;
 	__stack_chk_guard;
-	statfs;
 	swapcontext;
 	swapoff;
 	swapon;
@@ -354,10 +350,13 @@
 	cap_enter;
 	cap_getmode;
 	fhstat;
+	fhstatfs;
 	fstat;
 	fstatat;
+	fstatfs;
 	getdents;
 	getdirentries;
+	getfsstat;
 	getloginclass;
 	lstat;
 	posix_fallocate;
@@ -368,6 +367,7 @@
 	rctl_remove_rule;
 	setloginclass;
 	stat;
+	statfs;
 };
 
 FBSDprivate_1.0 {

Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h	Mon Jul 25 06:53:25 2011	(r224525)
@@ -84,7 +84,8 @@
 	struct timeval32 it_value;
 };
 
-#define FREEBSD4_MNAMELEN        (88 - 2 * sizeof(int32_t)) /* size of on/from name bufs */
+#define FREEBSD4_MFSNAMELEN	16
+#define FREEBSD4_MNAMELEN	(88 - 2 * sizeof(int32_t))
 
 /* 4.x version */
 struct statfs32 {
@@ -102,7 +103,7 @@
 	int32_t	f_flags;
 	int32_t	f_syncwrites;
 	int32_t	f_asyncwrites;
-	char	f_fstypename[MFSNAMELEN];
+	char	f_fstypename[FREEBSD4_MFSNAMELEN];
 	char	f_mntonname[FREEBSD4_MNAMELEN];
 	int32_t	f_syncreads;
 	int32_t	f_asyncreads;

Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -1347,14 +1347,17 @@
 freebsd4_freebsd32_statfs(struct thread *td, struct freebsd4_freebsd32_statfs_args *uap)
 {
 	struct statfs32 s32;
-	struct statfs s;
+	struct statfs *sp;
 	int error;
 
-	error = kern_statfs(td, uap->path, UIO_USERSPACE, &s);
-	if (error)
-		return (error);
-	copy_statfs(&s, &s32);
-	return (copyout(&s32, uap->buf, sizeof(s32)));
+	sp = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, uap->path, UIO_USERSPACE, sp);
+	if (error == 0) {
+		copy_statfs(sp, &s32);
+		error = copyout(&s32, uap->buf, sizeof(s32));
+	}
+	free(sp, M_TEMP);
+	return (error);
 }
 #endif
 
@@ -1363,14 +1366,17 @@
 freebsd4_freebsd32_fstatfs(struct thread *td, struct freebsd4_freebsd32_fstatfs_args *uap)
 {
 	struct statfs32 s32;
-	struct statfs s;
+	struct statfs *sp;
 	int error;
 
-	error = kern_fstatfs(td, uap->fd, &s);
-	if (error)
-		return (error);
-	copy_statfs(&s, &s32);
-	return (copyout(&s32, uap->buf, sizeof(s32)));
+	sp = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fstatfs(td, uap->fd, sp);
+	if (error == 0) {
+		copy_statfs(sp, &s32);
+		error = copyout(&s32, uap->buf, sizeof(s32));
+	}
+	free(sp, M_TEMP);
+	return (error);
 }
 #endif
 
@@ -1379,17 +1385,20 @@
 freebsd4_freebsd32_fhstatfs(struct thread *td, struct freebsd4_freebsd32_fhstatfs_args *uap)
 {
 	struct statfs32 s32;
-	struct statfs s;
+	struct statfs *sp;
 	fhandle_t fh;
 	int error;
 
 	if ((error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t))) != 0)
 		return (error);
-	error = kern_fhstatfs(td, fh, &s);
-	if (error)
-		return (error);
-	copy_statfs(&s, &s32);
-	return (copyout(&s32, uap->buf, sizeof(s32)));
+	sp = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fhstatfs(td, fh, sp);
+	if (error == 0) {
+		copy_statfs(sp, &s32);
+		error = copyout(&s32, uap->buf, sizeof(s32));
+	}
+	free(sp, M_TEMP);
+	return (error);
 }
 #endif
 

Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master	Mon Jul 25 06:53:25 2011	(r224525)
@@ -696,13 +696,16 @@
 				    size_t nbytes, struct sf_hdtr32 *hdtr, \
 				    off_t *sbytes, int flags); }
 394	AUE_NULL	UNIMPL	mac_syscall
-395	AUE_GETFSSTAT	NOPROTO	{ int getfsstat(struct statfs *buf, \
+395	AUE_GETFSSTAT	COMPAT8|NOPROTO	{ int getfsstat( \
+				    struct freebsd8_statfs *buf, \
 				    long bufsize, int flags); }
-396	AUE_STATFS	NOPROTO	{ int statfs(char *path, \
-				    struct statfs *buf); }
-397	AUE_FSTATFS	NOPROTO	{ int fstatfs(int fd, struct statfs *buf); }
-398	AUE_FHSTATFS	NOPROTO	{ int fhstatfs(const struct fhandle *u_fhp, \
+396	AUE_STATFS	COMPAT8|NOPROTO	{ int statfs(char *path, \
 				    struct statfs *buf); }
+397	AUE_FSTATFS	COMPAT8|NOPROTO	{ int fstatfs(int fd, \
+				    struct freebsd8_statfs *buf); }
+398	AUE_FHSTATFS	COMPAT8|NOPROTO	{ int fhstatfs( \
+				    const struct fhandle *u_fhp, \
+				    struct freebsd8_statfs *buf); }
 399	AUE_NULL	UNIMPL	nosys
 400	AUE_NULL	NOSTD|NOPROTO	{ int ksem_close(semid_t id); }
 401	AUE_NULL	NOSTD|NOPROTO	{ int ksem_post(semid_t id); }
@@ -1006,3 +1009,10 @@
 				    size_t count); }
 538	AUE_GETDIRENTRIES	STD	{ int freebsd32_getdirentries(int fd, \
 				    char *buf, u_int count, int32_t *basep); }
+539	AUE_GETFSSTAT	NOPROTO	{ int getfsstat(struct statfs *buf, \
+				    long bufsize, int flags); }
+540	AUE_STATFS	NOPROTO	{ int statfs(char *path, \
+				    struct statfs *buf); }
+541	AUE_FSTATFS	NOPROTO	{ int fstatfs(int fd, struct statfs *buf); }
+542	AUE_FHSTATFS	NOPROTO	{ int fhstatfs(const struct fhandle *u_fhp, \
+				    struct statfs *buf); }

Modified: soc2011/gk/ino64-head/sys/compat/linux/linux_stats.c
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/linux/linux_stats.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/compat/linux/linux_stats.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -394,7 +394,7 @@
 linux_statfs(struct thread *td, struct linux_statfs_args *args)
 {
 	struct l_statfs linux_statfs;
-	struct statfs bsd_statfs;
+	struct statfs *bsd_statfs;
 	char *path;
 	int error, dev_shm;
 
@@ -405,14 +405,17 @@
 		printf(ARGS(statfs, "%s, *"), path);
 #endif
 	dev_shm = 0;
-	error = kern_statfs(td, path, UIO_SYSSPACE, &bsd_statfs);
+	bsd_statfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, path, UIO_SYSSPACE, bsd_statfs);
 	if (strncmp(path, "/dev/shm", sizeof("/dev/shm") - 1) == 0)
 		dev_shm = (path[8] == '\0'
 		    || (path[8] == '/' && path[9] == '\0'));
 	LFREEPATH(path);
-	if (error)
+	if (error == 0)
+		bsd_to_linux_statfs(bsd_statfs, &linux_statfs);
+	free(bsd_statfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_to_linux_statfs(&bsd_statfs, &linux_statfs);
 	if (dev_shm)
 		linux_statfs.f_type = LINUX_SHMFS_MAGIC;
 	return copyout(&linux_statfs, args->buf, sizeof(linux_statfs));
@@ -438,7 +441,7 @@
 linux_statfs64(struct thread *td, struct linux_statfs64_args *args)
 {
 	struct l_statfs64 linux_statfs;
-	struct statfs bsd_statfs;
+	struct statfs *bsd_statfs;
 	char *path;
 	int error;
 
@@ -451,11 +454,14 @@
 	if (ldebug(statfs64))
 		printf(ARGS(statfs64, "%s, *"), path);
 #endif
-	error = kern_statfs(td, path, UIO_SYSSPACE, &bsd_statfs);
+	bsd_statfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, path, UIO_SYSSPACE, bsd_statfs);
 	LFREEPATH(path);
-	if (error)
+	if (error == 0)
+		bsd_to_linux_statfs64(bsd_statfs, &linux_statfs);
+	free(bsd_statfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_to_linux_statfs64(&bsd_statfs, &linux_statfs);
 	return copyout(&linux_statfs, args->buf, sizeof(linux_statfs));
 }
 
@@ -463,17 +469,20 @@
 linux_fstatfs(struct thread *td, struct linux_fstatfs_args *args)
 {
 	struct l_statfs linux_statfs;
-	struct statfs bsd_statfs;
+	struct statfs *bsd_statfs;
 	int error;
 
 #ifdef DEBUG
 	if (ldebug(fstatfs))
 		printf(ARGS(fstatfs, "%d, *"), args->fd);
 #endif
-	error = kern_fstatfs(td, args->fd, &bsd_statfs);
-	if (error)
-		return error;
-	bsd_to_linux_statfs(&bsd_statfs, &linux_statfs);
+	bsd_statfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fstatfs(td, args->fd, bsd_statfs);
+	if (error == 0)
+		bsd_to_linux_statfs(bsd_statfs, &linux_statfs);
+	free(bsd_statfs, M_TEMP);
+	if (error != 0)
+		return (error);
 	return copyout(&linux_statfs, args->buf, sizeof(linux_statfs));
 }
 

Modified: soc2011/gk/ino64-head/sys/compat/svr4/svr4_misc.c
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/svr4/svr4_misc.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/compat/svr4/svr4_misc.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -1383,17 +1383,20 @@
 	struct svr4_sys_statvfs_args *uap;
 {
 	struct svr4_statvfs sfs;
-	struct statfs bfs;
+	struct statfs *bfs;
 	char *path;
 	int error;
 
 	CHECKALTEXIST(td, uap->path, &path);
 
-	error = kern_statfs(td, path, UIO_SYSSPACE, &bfs);
+	bfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, path, UIO_SYSSPACE, bfs);
 	free(path, M_TEMP);
-	if (error)
+	if (error == 0)
+		bsd_statfs_to_svr4_statvfs(bfs, &sfs);
+	free(bfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_statfs_to_svr4_statvfs(&bfs, &sfs);
 	return copyout(&sfs, uap->fs, sizeof(sfs));
 }
 
@@ -1404,13 +1407,16 @@
 	struct svr4_sys_fstatvfs_args *uap;
 {
 	struct svr4_statvfs sfs;
-	struct statfs bfs;
+	struct statfs *bfs;
 	int error;
 
-	error = kern_fstatfs(td, uap->fd, &bfs);
-	if (error)
+	bfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fstatfs(td, uap->fd, bfs);
+	if (error == 0)
+		bsd_statfs_to_svr4_statvfs(bfs, &sfs);
+	free(bfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_statfs_to_svr4_statvfs(&bfs, &sfs);
 	return copyout(&sfs, uap->fs, sizeof(sfs));
 }
 
@@ -1421,17 +1427,20 @@
 	struct svr4_sys_statvfs64_args *uap;
 {
 	struct svr4_statvfs64 sfs;
-	struct statfs bfs;
+	struct statfs *bfs;
 	char *path;
 	int error;
 
 	CHECKALTEXIST(td, uap->path, &path);
 
-	error = kern_statfs(td, path, UIO_SYSSPACE, &bfs);
+	bfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, path, UIO_SYSSPACE, bfs);
 	free(path, M_TEMP);
-	if (error)
+	if (error == 0)
+		bsd_statfs_to_svr4_statvfs64(bfs, &sfs);
+	free(bfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_statfs_to_svr4_statvfs64(&bfs, &sfs);
 	return copyout(&sfs, uap->fs, sizeof(sfs));
 }
 
@@ -1442,13 +1451,16 @@
 	struct svr4_sys_fstatvfs64_args *uap;
 {
 	struct svr4_statvfs64 sfs;
-	struct statfs bfs;
+	struct statfs *bfs;
 	int error;
 
-	error = kern_fstatfs(td, uap->fd, &bfs);
-	if (error)
+	bfs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fstatfs(td, uap->fd, bfs);
+	if (error == 0)
+		bsd_statfs_to_svr4_statvfs64(bfs, &sfs);
+	free(bfs, M_TEMP);
+	if (error != 0)
 		return (error);
-	bsd_statfs_to_svr4_statvfs64(&bfs, &sfs);
 	return copyout(&sfs, uap->fs, sizeof(sfs));
 }
 

Modified: soc2011/gk/ino64-head/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- soc2011/gk/ino64-head/sys/fs/nfs/nfs_commonsubs.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/fs/nfs/nfs_commonsubs.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -1929,7 +1929,7 @@
 	nfsattrbit_t *retbitp = &retbits;
 	u_int32_t freenum, *retnump;
 	u_int64_t uquad;
-	struct statfs fs;
+	struct statfs *fs;
 	struct nfsfsinfo fsinf;
 	struct timespec temptime;
 	struct timeval curtime;
@@ -1957,11 +1957,13 @@
 	/*
 	 * Get the VFS_STATFS(), since some attributes need them.
 	 */
+	fs = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
 	if (NFSISSETSTATFS_ATTRBIT(retbitp)) {
-		error = VFS_STATFS(mp, &fs);
+		error = VFS_STATFS(mp, fs);
 		if (error != 0) {
 			if (reterr) {
 				nd->nd_repstat = NFSERR_ACCES;
+				free(fs, M_TEMP);
 				return (0);
 			}
 			NFSCLRSTATFS_ATTRBIT(retbitp);
@@ -1993,6 +1995,7 @@
 			if (error != 0) {
 				if (reterr) {
 					nd->nd_repstat = NFSERR_ACCES;
+					free(fs, M_TEMP);
 					return (0);
 				}
 				NFSCLRBIT_ATTRBIT(retbitp, NFSATTRBIT_ACL);
@@ -2133,7 +2136,7 @@
 			/*
 			 * Check quota and use min(quota, f_ffree).
 			 */
-			freenum = fs.f_ffree;
+			freenum = fs->f_ffree;
 #ifdef QUOTA
 			/*
 			 * ufs_quotactl() insists that the uid argument
@@ -2156,13 +2159,13 @@
 		case NFSATTRBIT_FILESFREE:
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			*tl++ = 0;
-			*tl = txdr_unsigned(fs.f_ffree);
+			*tl = txdr_unsigned(fs->f_ffree);
 			retnum += NFSX_HYPER;
 			break;
 		case NFSATTRBIT_FILESTOTAL:
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			*tl++ = 0;
-			*tl = txdr_unsigned(fs.f_files);
+			*tl = txdr_unsigned(fs->f_files);
 			retnum += NFSX_HYPER;
 			break;
 		case NFSATTRBIT_FSLOCATIONS:
@@ -2238,9 +2241,9 @@
 			break;
 		case NFSATTRBIT_QUOTAHARD:
 			if (priv_check_cred(cred, PRIV_VFS_EXCEEDQUOTA, 0))
-				freenum = fs.f_bfree;
+				freenum = fs->f_bfree;
 			else
-				freenum = fs.f_bavail;
+				freenum = fs->f_bavail;
 #ifdef QUOTA
 			/*
 			 * ufs_quotactl() insists that the uid argument
@@ -2256,15 +2259,15 @@
 #endif	/* QUOTA */
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			uquad = (u_int64_t)freenum;
-			NFSQUOTABLKTOBYTE(uquad, fs.f_bsize);
+			NFSQUOTABLKTOBYTE(uquad, fs->f_bsize);
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
 		case NFSATTRBIT_QUOTASOFT:
 			if (priv_check_cred(cred, PRIV_VFS_EXCEEDQUOTA, 0))
-				freenum = fs.f_bfree;
+				freenum = fs->f_bfree;
 			else
-				freenum = fs.f_bavail;
+				freenum = fs->f_bavail;
 #ifdef QUOTA
 			/*
 			 * ufs_quotactl() insists that the uid argument
@@ -2280,7 +2283,7 @@
 #endif	/* QUOTA */
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			uquad = (u_int64_t)freenum;
-			NFSQUOTABLKTOBYTE(uquad, fs.f_bsize);
+			NFSQUOTABLKTOBYTE(uquad, fs->f_bsize);
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
@@ -2301,7 +2304,7 @@
 #endif	/* QUOTA */
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			uquad = (u_int64_t)freenum;
-			NFSQUOTABLKTOBYTE(uquad, fs.f_bsize);
+			NFSQUOTABLKTOBYTE(uquad, fs->f_bsize);
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
@@ -2314,24 +2317,24 @@
 		case NFSATTRBIT_SPACEAVAIL:
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
 			if (priv_check_cred(cred, PRIV_VFS_BLOCKRESERVE, 0))
-				uquad = (u_int64_t)fs.f_bfree;
+				uquad = (u_int64_t)fs->f_bfree;
 			else
-				uquad = (u_int64_t)fs.f_bavail;
-			uquad *= fs.f_bsize;
+				uquad = (u_int64_t)fs->f_bavail;
+			uquad *= fs->f_bsize;
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
 		case NFSATTRBIT_SPACEFREE:
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
-			uquad = (u_int64_t)fs.f_bfree;
-			uquad *= fs.f_bsize;
+			uquad = (u_int64_t)fs->f_bfree;
+			uquad *= fs->f_bsize;
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
 		case NFSATTRBIT_SPACETOTAL:
 			NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER);
-			uquad = (u_int64_t)fs.f_blocks;
-			uquad *= fs.f_bsize;
+			uquad = (u_int64_t)fs->f_blocks;
+			uquad *= fs->f_bsize;
 			txdr_hyper(uquad, tl);
 			retnum += NFSX_HYPER;
 			break;
@@ -2404,6 +2407,7 @@
 	}
 	if (naclp != NULL)
 		acl_free(naclp);
+	free(fs, M_TEMP);
 	*retnump = txdr_unsigned(retnum);
 	return (retnum + prefixnum);
 }

Modified: soc2011/gk/ino64-head/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- soc2011/gk/ino64-head/sys/fs/nfsserver/nfs_nfsdserv.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/fs/nfsserver/nfs_nfsdserv.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -1924,21 +1924,22 @@
 	u_int32_t *tl;
 	int getret = 1;
 	struct nfsvattr at;
-	struct statfs sfs;
 	u_quad_t tval;
 
 	if (nd->nd_repstat) {
 		nfsrv_postopattr(nd, getret, &at);
 		return (0);
 	}
-	sf = &sfs;
+	sf = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
 	nd->nd_repstat = nfsvno_statfs(vp, sf);
 	getret = nfsvno_getattr(vp, &at, nd->nd_cred, p, 1);
 	vput(vp);
 	if (nd->nd_flag & ND_NFSV3)
 		nfsrv_postopattr(nd, getret, &at);
-	if (nd->nd_repstat)
+	if (nd->nd_repstat) {
+		free(sf, M_TEMP);
 		return (0);
+	}
 	if (nd->nd_flag & ND_NFSV2) {
 		NFSM_BUILD(tl, u_int32_t *, NFSX_V2STATFS);
 		*tl++ = txdr_unsigned(NFS_V2MAXDATA);
@@ -1965,6 +1966,7 @@
 		txdr_hyper(tval, tl); tl += 2;
 		*tl = 0;
 	}
+	free(sf, M_TEMP);
 	return (0);
 }
 
@@ -3353,19 +3355,20 @@
 {
 	int error = 0, ret, fhsize = NFSX_MYFH;
 	struct nfsvattr nva;
-	struct statfs sf;
+	struct statfs *sf;
 	struct nfsfsinfo fs;
 	fhandle_t fh;
 
+	sf = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
 	nd->nd_repstat = nfsvno_getattr(vp, &nva, nd->nd_cred, p, 1);
 	if (!nd->nd_repstat)
-		nd->nd_repstat = nfsvno_statfs(vp, &sf);
+		nd->nd_repstat = nfsvno_statfs(vp, sf);
 	if (!nd->nd_repstat)
 		nd->nd_repstat = nfsvno_getfh(vp, &fh, p);
 	if (!nd->nd_repstat) {
 		nfsvno_getfs(&fs, isdgram);
 		error = nfsv4_loadattr(nd, vp, &nva, NULL, &fh, fhsize, NULL,
-		    &sf, NULL, &fs, NULL, 1, &ret, NULL, NULL, p, nd->nd_cred);
+		    sf, NULL, &fs, NULL, 1, &ret, NULL, NULL, p, nd->nd_cred);
 		if (!error) {
 			if (nd->nd_procnum == NFSV4OP_NVERIFY) {
 				if (ret == 0)
@@ -3377,6 +3380,7 @@
 		}
 	}
 	vput(vp);
+	free(sf, M_TEMP);
 	return (error);
 }
 

Modified: soc2011/gk/ino64-head/sys/fs/nullfs/null_vfsops.c
==============================================================================
--- soc2011/gk/ino64-head/sys/fs/nullfs/null_vfsops.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/fs/nullfs/null_vfsops.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -269,28 +269,32 @@
 	struct statfs *sbp;
 {
 	int error;
-	struct statfs mstat;
+	struct statfs *mstat;
 
 	NULLFSDEBUG("nullfs_statfs(mp = %p, vp = %p->%p)\n", (void *)mp,
 	    (void *)MOUNTTONULLMOUNT(mp)->nullm_rootvp,
 	    (void *)NULLVPTOLOWERVP(MOUNTTONULLMOUNT(mp)->nullm_rootvp));
 
-	bzero(&mstat, sizeof(mstat));
+	mstat = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK | M_ZERO);
 
-	error = VFS_STATFS(MOUNTTONULLMOUNT(mp)->nullm_vfs, &mstat);
-	if (error)
+	error = VFS_STATFS(MOUNTTONULLMOUNT(mp)->nullm_vfs, mstat);
+	if (error) {
+		free(mstat, M_TEMP);
 		return (error);
+	}
 
 	/* now copy across the "interesting" information and fake the rest */
-	sbp->f_type = mstat.f_type;
-	sbp->f_flags = mstat.f_flags;
-	sbp->f_bsize = mstat.f_bsize;
-	sbp->f_iosize = mstat.f_iosize;
-	sbp->f_blocks = mstat.f_blocks;
-	sbp->f_bfree = mstat.f_bfree;
-	sbp->f_bavail = mstat.f_bavail;
-	sbp->f_files = mstat.f_files;
-	sbp->f_ffree = mstat.f_ffree;
+	sbp->f_type = mstat->f_type;
+	sbp->f_flags = mstat->f_flags;
+	sbp->f_bsize = mstat->f_bsize;
+	sbp->f_iosize = mstat->f_iosize;
+	sbp->f_blocks = mstat->f_blocks;
+	sbp->f_bfree = mstat->f_bfree;
+	sbp->f_bavail = mstat->f_bavail;
+	sbp->f_files = mstat->f_files;
+	sbp->f_ffree = mstat->f_ffree;
+
+	free(mstat, M_TEMP);
 	return (0);
 }
 

Modified: soc2011/gk/ino64-head/sys/fs/unionfs/union_vfsops.c
==============================================================================
--- soc2011/gk/ino64-head/sys/fs/unionfs/union_vfsops.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/fs/unionfs/union_vfsops.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -396,7 +396,7 @@
 {
 	struct unionfs_mount *ump;
 	int		error;
-	struct statfs	mstat;
+	struct statfs	*mstat;
 	uint64_t	lbsize;
 
 	ump = MOUNTTOUNIONFSMOUNT(mp);
@@ -404,39 +404,47 @@
 	UNIONFSDEBUG("unionfs_statfs(mp = %p, lvp = %p, uvp = %p)\n",
 	    (void *)mp, (void *)ump->um_lowervp, (void *)ump->um_uppervp);
 
-	bzero(&mstat, sizeof(mstat));
+	mstat = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK | M_ZERO);
 
-	error = VFS_STATFS(ump->um_lowervp->v_mount, &mstat);
-	if (error)
+	error = VFS_STATFS(ump->um_lowervp->v_mount, mstat);
+	if (error) {
+		free(mstat, M_TEMP);
 		return (error);
+	}
 
 	/* now copy across the "interesting" information and fake the rest */
-	sbp->f_blocks = mstat.f_blocks;
-	sbp->f_files = mstat.f_files;
+	sbp->f_blocks = mstat->f_blocks;
+	sbp->f_files = mstat->f_files;
 
-	lbsize = mstat.f_bsize;
+	lbsize = mstat->f_bsize;
 
-	error = VFS_STATFS(ump->um_uppervp->v_mount, &mstat);
-	if (error)
+	error = VFS_STATFS(ump->um_uppervp->v_mount, mstat);
+	if (error) {
+		free(mstat, M_TEMP);
 		return (error);
+	}
+
 
 	/*
 	 * The FS type etc is copy from upper vfs.
 	 * (write able vfs have priority)
 	 */
-	sbp->f_type = mstat.f_type;
-	sbp->f_flags = mstat.f_flags;
-	sbp->f_bsize = mstat.f_bsize;
-	sbp->f_iosize = mstat.f_iosize;
-
-	if (mstat.f_bsize != lbsize)
-		sbp->f_blocks = ((off_t)sbp->f_blocks * lbsize) / mstat.f_bsize;
-
-	sbp->f_blocks += mstat.f_blocks;
-	sbp->f_bfree = mstat.f_bfree;
-	sbp->f_bavail = mstat.f_bavail;
-	sbp->f_files += mstat.f_files;
-	sbp->f_ffree = mstat.f_ffree;
+	sbp->f_type = mstat->f_type;
+	sbp->f_flags = mstat->f_flags;
+	sbp->f_bsize = mstat->f_bsize;
+	sbp->f_iosize = mstat->f_iosize;
+
+	if (mstat->f_bsize != lbsize)
+		sbp->f_blocks = ((off_t)sbp->f_blocks * lbsize) /
+		    mstat->f_bsize;
+
+	sbp->f_blocks += mstat->f_blocks;
+	sbp->f_bfree = mstat->f_bfree;
+	sbp->f_bavail = mstat->f_bavail;
+	sbp->f_files += mstat->f_files;
+	sbp->f_ffree = mstat->f_ffree;
+
+	free(mstat, M_TEMP);
 	return (0);
 }
 

Modified: soc2011/gk/ino64-head/sys/i386/ibcs2/ibcs2_stat.c
==============================================================================
--- soc2011/gk/ino64-head/sys/i386/ibcs2/ibcs2_stat.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/i386/ibcs2/ibcs2_stat.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -107,16 +107,18 @@
 	struct thread *td;
 	struct ibcs2_statfs_args *uap;
 {
-	struct statfs sf;
+	struct statfs *sf;
 	char *path;
 	int error;
 
 	CHECKALTEXIST(td, uap->path, &path);
-	error = kern_statfs(td, path, UIO_SYSSPACE, &sf);
+	sf = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_statfs(td, path, UIO_SYSSPACE, sf);
 	free(path, M_TEMP);
-	if (error)
-		return (error);
-	return cvt_statfs(&sf, (caddr_t)uap->buf, uap->len);
+	if (error == 0)
+		error = cvt_statfs(sf, (caddr_t)uap->buf, uap->len);
+	free(sf, M_TEMP);
+	return (error);
 }
 
 int
@@ -124,13 +126,15 @@
 	struct thread *td;
 	struct ibcs2_fstatfs_args *uap;
 {
-	struct statfs sf;
+	struct statfs *sf;
 	int error;
 
-	error = kern_fstatfs(td, uap->fd, &sf);
-	if (error)
-		return (error);
-	return cvt_statfs(&sf, (caddr_t)uap->buf, uap->len);
+	sf = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	error = kern_fstatfs(td, uap->fd, sf);
+	if (error == 0)
+		error = cvt_statfs(sf, (caddr_t)uap->buf, uap->len);
+	free(sf, M_TEMP);
+	return (error);
 }
 
 int

Modified: soc2011/gk/ino64-head/sys/kern/kern_acct.c
==============================================================================
--- soc2011/gk/ino64-head/sys/kern/kern_acct.c	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/kern/kern_acct.c	Mon Jul 25 06:53:25 2011	(r224525)
@@ -553,7 +553,7 @@
 static void
 acctwatch(void)
 {
-	struct statfs sb;
+	struct statfs *sp;
 	int vfslocked;
 
 	sx_assert(&acct_sx, SX_XLOCKED);
@@ -584,24 +584,27 @@
 	 * Stopping here is better than continuing, maybe it will be VBAD
 	 * next time around.
 	 */
-	if (VFS_STATFS(acct_vp->v_mount, &sb) < 0) {
+	sp = malloc(sizeof(struct statfs), M_TEMP, M_WAITOK);
+	if (VFS_STATFS(acct_vp->v_mount, sp) < 0) {
 		VFS_UNLOCK_GIANT(vfslocked);
+		free(sp, M_TEMP);
 		return;
 	}
 	VFS_UNLOCK_GIANT(vfslocked);
 	if (acct_suspended) {
-		if (sb.f_bavail > (int64_t)(acctresume * sb.f_blocks /
+		if (sp->f_bavail > (int64_t)(acctresume * sp->f_blocks /
 		    100)) {
 			acct_suspended = 0;
 			log(LOG_NOTICE, "Accounting resumed\n");
 		}
 	} else {
-		if (sb.f_bavail <= (int64_t)(acctsuspend * sb.f_blocks /
+		if (sp->f_bavail <= (int64_t)(acctsuspend * sp->f_blocks /
 		    100)) {
 			acct_suspended = 1;
 			log(LOG_NOTICE, "Accounting suspended\n");
 		}
 	}
+	free(sp, M_TEMP);
 }
 
 /*

Modified: soc2011/gk/ino64-head/sys/kern/syscalls.master
==============================================================================
--- soc2011/gk/ino64-head/sys/kern/syscalls.master	Mon Jul 25 01:42:51 2011	(r224524)
+++ soc2011/gk/ino64-head/sys/kern/syscalls.master	Mon Jul 25 06:53:25 2011	(r224525)
@@ -706,13 +706,14 @@
 				    off_t *sbytes, int flags); }
 394	AUE_NULL	STD	{ int mac_syscall(const char *policy, \
 				    int call, void *arg); }
-395	AUE_GETFSSTAT	STD	{ int getfsstat(struct statfs *buf, \
+395	AUE_GETFSSTAT	COMPAT8	{ int getfsstat(struct freebsd8_statfs *buf, \
 				    long bufsize, int flags); }
-396	AUE_STATFS	STD	{ int statfs(char *path, \
-				    struct statfs *buf); }
-397	AUE_FSTATFS	STD	{ int fstatfs(int fd, struct statfs *buf); }
-398	AUE_FHSTATFS	STD	{ int fhstatfs(const struct fhandle *u_fhp, \
-				    struct statfs *buf); }
+396	AUE_STATFS	COMPAT8	{ int statfs(char *path, \
+				    struct freebsd8_statfs *buf); }
+397	AUE_FSTATFS	COMPAT8	{ int fstatfs(int fd, \
+				    struct freebsd8_statfs *buf); }
+398	AUE_FHSTATFS	COMPAT8	{ int fhstatfs(const struct fhandle *u_fhp, \
+				    struct freebsd8_statfs *buf); }
 399	AUE_NULL	UNIMPL	nosys

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-soc-all mailing list