Date: Fri, 17 Jun 2011 22:28:55 +0000 From: gk@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r223366 - in soc2011/gk/ino64-head/sys: compat/freebsd32 kern sys Message-ID: <20110617222855.8D9FE106566B@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gk Date: Fri Jun 17 22:28:55 2011 New Revision: 223366 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=223366 Log: Change ino_t to 64 bits and nlink_t to 32 bits. Add new syscalls Modified: 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/kern/kern_descrip.c soc2011/gk/ino64-head/sys/kern/syscalls.master soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c soc2011/gk/ino64-head/sys/sys/_types.h soc2011/gk/ino64-head/sys/sys/stat.h soc2011/gk/ino64-head/sys/sys/vnode.h Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h ============================================================================== --- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h Fri Jun 17 22:28:55 2011 (r223366) @@ -137,10 +137,31 @@ }; struct stat32 { - dev_t st_dev; ino_t st_ino; - mode_t st_mode; nlink_t st_nlink; + dev_t st_dev; + mode_t st_mode; + u_int16_t st_padding0; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + struct timespec32 st_atim; + struct timespec32 st_mtim; + struct timespec32 st_ctim; + off_t st_size; + int64_t st_blocks; + u_int32_t st_blksize; + u_int32_t st_flags; + u_int32_t st_gen; + struct timespec32 st_birthtim; + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32)); + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32)); +}; +struct freebsd8_stat32 { + dev_t st_dev; + u_int32_t st_ino; + mode_t st_mode; + u_int16_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; @@ -159,9 +180,9 @@ struct ostat32 { __uint16_t st_dev; - ino_t st_ino; + __uint32_t st_ino; mode_t st_mode; - nlink_t st_nlink; + __uint16_t st_nlink; __uint16_t st_uid; __uint16_t st_gid; __uint16_t st_rdev; Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c Fri Jun 17 22:28:55 2011 (r223366) @@ -113,7 +113,8 @@ CTASSERT(sizeof(struct kevent32) == 20); CTASSERT(sizeof(struct iovec32) == 8); CTASSERT(sizeof(struct msghdr32) == 28); -CTASSERT(sizeof(struct stat32) == 96); +CTASSERT(sizeof(struct stat32) == 104); +CTASSERT(sizeof(struct freebsd8_stat32) == 96); CTASSERT(sizeof(struct sigaction32) == 24); static int freebsd32_kevent_copyout(void *arg, struct kevent *kevp, int count); @@ -1797,6 +1798,133 @@ #endif int +freebsd32_fhstat(struct thread *td, struct freebsd32_fhstat_args *uap) +{ + struct stat sb; + struct stat32 sb32; + struct fhandle fh; + int error; + + error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); + if (error != 0) + return (error); + error = kern_fhstat(td, fh, &sb); + if (error != 0) + return (error); + copy_stat(&sb, &sb32); + error = copyout(&sb32, uap->sb, sizeof (sb32)); + return (error); +} + +#ifdef COMPAT_FREEBSD8 +static void +freebsd8_cvtstat32(struct stat *in, struct freebsd8_stat32 *out) +{ + CP(*in, *out, st_ino); + CP(*in, *out, st_nlink); + CP(*in, *out, st_dev); + CP(*in, *out, st_mode); + CP(*in, *out, st_uid); + CP(*in, *out, st_gid); + CP(*in, *out, st_rdev); + TS_CP(*in, *out, st_atim); + TS_CP(*in, *out, st_mtim); + TS_CP(*in, *out, st_ctim); + CP(*in, *out, st_size); + CP(*in, *out, st_blocks); + CP(*in, *out, st_blksize); + CP(*in, *out, st_flags); + CP(*in, *out, st_gen); + TS_CP(*in, *out, st_birthtim); +} + +int +freebsd8_freebsd32_stat(struct thread *td, + struct freebsd8_freebsd32_stat_args *uap) +{ + struct stat sb; + struct freebsd8_stat32 sb32; + int error; + + error = kern_stat(td, uap->path, UIO_USERSPACE, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat32(&sb, &sb32); + error = copyout(&sb32, uap->ub, sizeof (sb32)); + return (error); +} + +int +freebsd8_freebsd32_fstat(struct thread *td, + struct freebsd8_freebsd32_fstat_args *uap) +{ + struct stat sb; + struct freebsd8_stat32 sb32; + int error; + + error = kern_fstat(td, uap->fd, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat32(&sb, &sb32); + error = copyout(&sb32, uap->ub, sizeof (sb32)); + return (error); +} + +int +freebsd8_freebsd32_fstatat(struct thread *td, + struct freebsd8_freebsd32_fstatat_args *uap) +{ + struct stat sb; + struct freebsd8_stat32 sb32; + int error; + + error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE, + &sb); + if (error != 0) + return (error); + freebsd8_cvtstat32(&sb, &sb32); + error = copyout(&sb32, uap->buf, sizeof (sb32)); + return (error); +} + +int +freebsd8_freebsd32_lstat(struct thread *td, + struct freebsd8_freebsd32_lstat_args *uap) +{ + struct stat sb; + struct freebsd8_stat32 sb32; + int error; + + error = kern_lstat(td, uap->path, UIO_USERSPACE, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat32(&sb, &sb32); + error = copyout(&sb32, uap->ub, sizeof (sb32)); + return (error); +} + +int +freebsd8_freebsd32_fhstat(struct thread *td, + struct freebsd8_freebsd32_fhstat_args *uap) +{ + struct stat sb; + struct freebsd8_stat32 sb32; + struct fhandle fh; + int error; + + error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); + if (error != 0) + return (error); + error = kern_fhstat(td, fh, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat32(&sb, &sb32); + error = copyout(&sb32, uap->sb, sizeof (sb32)); + return (error); +} +#endif + +int freebsd32_sysctl(struct thread *td, struct freebsd32_sysctl_args *uap) { int error, name[CTL_MAXNAME]; Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master ============================================================================== --- soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master Fri Jun 17 22:28:55 2011 (r223366) @@ -344,12 +344,12 @@ 185 AUE_NULL UNIMPL lfs_markv 186 AUE_NULL UNIMPL lfs_segclean 187 AUE_NULL UNIMPL lfs_segwait -188 AUE_STAT STD { int freebsd32_stat(char *path, \ - struct stat32 *ub); } -189 AUE_FSTAT STD { int freebsd32_fstat(int fd, \ - struct stat32 *ub); } -190 AUE_LSTAT STD { int freebsd32_lstat(char *path, \ - struct stat32 *ub); } +188 AUE_STAT COMPAT8 { int freebsd32_stat(char *path, \ + struct freebsd8_stat32 *ub); } +189 AUE_FSTAT COMPAT8 { int freebsd32_fstat(int fd, \ + struct freebsd8_stat32 *ub); } +190 AUE_LSTAT COMPAT8 { int freebsd32_lstat(char *path, \ + struct freebsd8_stat32 *ub); } 191 AUE_PATHCONF NOPROTO { int pathconf(char *path, int name); } 192 AUE_FPATHCONF NOPROTO { int fpathconf(int fd, int name); } 193 AUE_NULL UNIMPL nosys @@ -528,8 +528,8 @@ struct statfs32 *buf); } 298 AUE_FHOPEN NOPROTO { int fhopen(const struct fhandle *u_fhp, \ int flags); } -299 AUE_FHSTAT NOPROTO { int fhstat(const struct fhandle *u_fhp, \ - struct stat *sb); } +299 AUE_FHSTAT COMPAT8 { int freebsd32_fhstat(const struct fhandle *u_fhp, \ + struct freebsd8_stat32 *sb); } ; syscall numbers for FreeBSD 300 AUE_NULL NOPROTO { int modnext(int modid); } 301 AUE_NULL STD { int freebsd32_modstat(int modid, \ @@ -919,8 +919,9 @@ gid_t gid, int flag); } 492 AUE_FEXECVE STD { int freebsd32_fexecve(int fd, \ u_int32_t *argv, u_int32_t *envv); } -493 AUE_FSTATAT STD { int freebsd32_fstatat(int fd, char *path, \ - struct stat *buf, int flag); } +493 AUE_FSTATAT COMPAT8 { int freebsd32_fstatat(int fd, \ + char *path, struct freebsd8_stat32 *buf, \ + int flag); } 494 AUE_FUTIMESAT STD { int freebsd32_futimesat(int fd, char *path, \ struct timeval *times); } 495 AUE_LINKAT NOPROTO { int linkat(int fd1, char *path1, int fd2, \ @@ -991,3 +992,13 @@ uint32_t offsetlo, uint32_t offsethi,\ uint32_t lenlo, uint32_t lenhi); } 531 AUE_NULL UNIMPL posix_fadvise +532 AUE_STAT STD { int freebsd32_stat(char *path, \ + struct stat32 *ub); } +533 AUE_FSTAT STD { int freebsd32_fstat(int fd, \ + struct stat32 *ub); } +534 AUE_LSTAT STD { int freebsd32_lstat(char *path, \ + struct stat32 *ub); } +535 AUE_FHSTAT STD { int freebsd32_fhstat(const struct fhandle *u_fhp, \ + struct stat32 *sb); } +536 AUE_FSTATAT STD { int freebsd32_fstatat(int fd, char *path, \ + struct stat32 *buf, int flag); } Modified: soc2011/gk/ino64-head/sys/kern/kern_descrip.c ============================================================================== --- soc2011/gk/ino64-head/sys/kern/kern_descrip.c Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/kern/kern_descrip.c Fri Jun 17 22:28:55 2011 (r223366) @@ -1271,6 +1271,31 @@ } #endif /* COMPAT_43 */ +#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7) || \ + defined(COMPAT_FREEBSD8) +#ifndef _SYS_SYSPROTO_H_ +struct freebsd8_fstat_args { + int fd; + struct freebsd8_stat *sb; +}; +#endif +int +freebsd8_fstat(struct thread *td, struct freebsd8_fstat_args *uap) +{ + struct stat sb; + struct freebsd8_stat osb; + int error; + + error = kern_fstat(td, uap->fd, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat(&sb, &osb); + error = copyout(&osb, uap->sb, sizeof(osb)); + return (error); +} +#endif /* COMPAT_FREEBSD8 */ + /* * Return status information about a file descriptor. */ Modified: soc2011/gk/ino64-head/sys/kern/syscalls.master ============================================================================== --- soc2011/gk/ino64-head/sys/kern/syscalls.master Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/kern/syscalls.master Fri Jun 17 22:28:55 2011 (r223366) @@ -364,9 +364,12 @@ 185 AUE_NULL UNIMPL lfs_markv 186 AUE_NULL UNIMPL lfs_segclean 187 AUE_NULL UNIMPL lfs_segwait -188 AUE_STAT STD { int stat(char *path, struct stat *ub); } -189 AUE_FSTAT STD { int fstat(int fd, struct stat *sb); } -190 AUE_LSTAT STD { int lstat(char *path, struct stat *ub); } +188 AUE_STAT COMPAT8 { int stat(char *path, \ + struct freebsd8_stat *ub); } +189 AUE_FSTAT COMPAT8 { int fstat(int fd, \ + struct freebsd8_stat *sb); } +190 AUE_LSTAT COMPAT8 { int lstat(char *path, \ + struct freebsd8_stat *ub); } 191 AUE_PATHCONF STD { int pathconf(char *path, int name); } 192 AUE_FPATHCONF STD { int fpathconf(int fd, int name); } 193 AUE_NULL UNIMPL nosys @@ -532,8 +535,8 @@ struct ostatfs *buf); } 298 AUE_FHOPEN STD { int fhopen(const struct fhandle *u_fhp, \ int flags); } -299 AUE_FHSTAT STD { int fhstat(const struct fhandle *u_fhp, \ - struct stat *sb); } +299 AUE_FHSTAT COMPAT8 { int fhstat(const struct fhandle *u_fhp, \ + struct freebsd8_stat *sb); } ; syscall numbers for FreeBSD 300 AUE_NULL STD { int modnext(int modid); } 301 AUE_NULL STD { int modstat(int modid, \ @@ -879,8 +882,8 @@ gid_t gid, int flag); } 492 AUE_FEXECVE STD { int fexecve(int fd, char **argv, \ char **envv); } -493 AUE_FSTATAT STD { int fstatat(int fd, char *path, \ - struct stat *buf, int flag); } +493 AUE_FSTATAT COMPAT8 { int fstatat(int fd, char *path, \ + struct freebsd8_stat *buf, int flag); } 494 AUE_FUTIMESAT STD { int futimesat(int fd, char *path, \ struct timeval *times); } 495 AUE_LINKAT STD { int linkat(int fd1, char *path1, int fd2, \ @@ -948,5 +951,12 @@ 530 AUE_NULL STD { int posix_fallocate(int fd, \ off_t offset, off_t len); } 531 AUE_NULL UNIMPL posix_fadvise +532 AUE_STAT STD { int stat(char *path, struct stat *ub); } +533 AUE_FSTAT STD { int fstat(int fd, struct stat *sb); } +534 AUE_LSTAT STD { int lstat(char *path, struct stat *ub); } +535 AUE_FHSTAT STD { int fhstat(const struct fhandle *u_fhp, \ + struct stat *sb); } +536 AUE_FSTATAT STD { int fstatat(int fd, char *path, \ + struct stat *buf, int flag); } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master Modified: soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c ============================================================================== --- soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c Fri Jun 17 22:28:55 2011 (r223366) @@ -2271,6 +2271,123 @@ } #endif /* COMPAT_43 */ +#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7) || \ + defined(COMPAT_FREEBSD8) +void +freebsd8_cvtstat(struct stat *st, struct freebsd8_stat *ost) +{ + ost->st_dev = st->st_dev; + ost->st_ino = st->st_ino; /* truncate */ + ost->st_mode = st->st_mode; + ost->st_nlink = st->st_nlink; /* truncate */ + ost->st_uid = st->st_uid; + ost->st_gid = st->st_gid; + ost->st_rdev = st->st_rdev; + ost->st_atim = st->st_atim; + ost->st_mtim = st->st_mtim; + ost->st_ctim = st->st_ctim; + ost->st_size = st->st_size; + ost->st_blocks = st->st_blocks; + ost->st_blksize = st->st_blksize; + ost->st_flags = st->st_flags; + ost->st_gen = st->st_gen; + ost->st_lspare = st->st_lspare; + ost->st_birthtim = st->st_birthtim; +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd8_stat_args { + char *path; + struct freebsd8_stat *ub; +}; +#endif +int +freebsd8_stat(struct thread *td, struct freebsd8_stat_args* uap) +{ + struct stat sb; + struct freebsd8_stat osb; + int error; + + error = kern_stat(td, uap->path, UIO_USERSPACE, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat(&sb, &osb); + error = copyout(&osb, uap->ub, sizeof(osb)); + return (error); +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd8_lstat_args { + char *path; + struct freebsd8_stat *ub; +}; +#endif +int +freebsd8_lstat(struct thread *td, register struct freebsd8_lstat_args* uap) +{ + struct stat sb; + struct freebsd8_stat osb; + int error; + + error = kern_lstat(td, uap->path, UIO_USERSPACE, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat(&sb, &osb); + error = copyout(&osb, uap->ub, sizeof(osb)); + return (error); +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd8_fhstat_args { + struct fhandle *u_fhp; + struct freebsd8_stat *sb; +}; +#endif +int +freebsd8_fhstat(struct thread *td, struct freebsd8_fhstat_args* uap) +{ + struct fhandle fh; + struct stat sb; + struct freebsd8_stat osb; + int error; + + error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); + if (error != 0) + return (error); + error = kern_fhstat(td, fh, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat(&sb, &osb); + error = copyout(&osb, uap->sb, sizeof(osb)); + return (error); +} + +#ifndef _SYS_SYSPROTO_H_ +struct freebsd8_fstatat_args { + int fd; + char *path; + struct freebsd8_stat *buf; + int flag; +}; +#endif +int +freebsd8_fstatat(struct thread *td, struct freebsd8_fstatat_args* uap) +{ + struct stat sb; + struct freebsd8_stat osb; + int error; + + error = kern_statat(td, uap->flag, uap->fd, uap->path, + UIO_USERSPACE, &sb); + if (error != 0) + return (error); + freebsd8_cvtstat(&sb, &osb); + error = copyout(&osb, uap->buf, sizeof(osb)); + return (error); +} +#endif /* COMPAT_FREEBSD8 */ + /* * Get file status; this version follows links. */ Modified: soc2011/gk/ino64-head/sys/sys/_types.h ============================================================================== --- soc2011/gk/ino64-head/sys/sys/_types.h Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/sys/_types.h Fri Jun 17 22:28:55 2011 (r223366) @@ -43,13 +43,13 @@ typedef __uint64_t __fsfilcnt_t; typedef __uint32_t __gid_t; typedef __int64_t __id_t; /* can hold a gid_t, pid_t, or uid_t */ -typedef __uint32_t __ino_t; /* inode number */ +typedef __uint64_t __ino_t; /* inode number */ typedef long __key_t; /* IPC key (for Sys V IPC) */ typedef __int32_t __lwpid_t; /* Thread ID (a.k.a. LWP) */ typedef __uint16_t __mode_t; /* permissions */ typedef int __accmode_t; /* access permissions */ typedef int __nl_item; -typedef __uint16_t __nlink_t; /* link count */ +typedef __uint32_t __nlink_t; /* link count */ typedef __int64_t __off_t; /* file offset */ typedef __int32_t __pid_t; /* process [group] */ typedef __int64_t __rlim_t; /* resource limit - intentionally */ Modified: soc2011/gk/ino64-head/sys/sys/stat.h ============================================================================== --- soc2011/gk/ino64-head/sys/sys/stat.h Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/sys/stat.h Fri Jun 17 22:28:55 2011 (r223366) @@ -102,9 +102,9 @@ #if __BSD_VISIBLE struct ostat { __uint16_t st_dev; /* inode's device */ - ino_t st_ino; /* inode's number */ + __uint32_t st_ino; /* inode's number */ mode_t st_mode; /* inode protection mode */ - nlink_t st_nlink; /* number of hard links */ + __uint16_t st_nlink; /* number of hard links */ __uint16_t st_uid; /* user ID of the file's owner */ __uint16_t st_gid; /* group ID of the file's group */ __uint16_t st_rdev; /* device type */ @@ -117,13 +117,44 @@ fflags_t st_flags; /* user defined flags for file */ __uint32_t st_gen; /* file generation number */ }; + +struct freebsd8_stat { + __dev_t st_dev; /* inode's device */ + __uint32_t st_ino; /* inode's number */ + mode_t st_mode; /* inode protection mode */ + __uint16_t st_nlink; /* number of hard links */ + uid_t st_uid; /* user ID of the file's owner */ + gid_t st_gid; /* group ID of the file's group */ + __dev_t st_rdev; /* device type */ + struct timespec st_atim; /* time of last access */ + struct timespec st_mtim; /* time of last data modification */ + struct timespec st_ctim; /* time of last file status change */ + off_t st_size; /* file size, in bytes */ + blkcnt_t st_blocks; /* blocks allocated for file */ + blksize_t st_blksize; /* optimal blocksize for I/O */ + fflags_t st_flags; /* user defined flags for file */ + __uint32_t st_gen; /* file generation number */ + __int32_t st_lspare; + struct timespec st_birthtim; /* time of file creation */ + /* + * Explicitly pad st_birthtim to 16 bytes so that the size of + * struct stat is backwards compatible. We use bitfields instead + * of an array of chars so that this doesn't require a C99 compiler + * to compile if the size of the padding is 0. We use 2 bitfields + * to cover up to 64 bits on 32-bit machines. We assume that + * CHAR_BIT is 8... + */ + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); +}; #endif /* __BSD_VISIBLE */ struct stat { - __dev_t st_dev; /* inode's device */ ino_t st_ino; /* inode's number */ - mode_t st_mode; /* inode protection mode */ nlink_t st_nlink; /* number of hard links */ + __dev_t st_dev; /* inode's device */ + mode_t st_mode; /* inode protection mode */ + __int16_t st_padding0; uid_t st_uid; /* user ID of the file's owner */ gid_t st_gid; /* group ID of the file's group */ __dev_t st_rdev; /* device type */ @@ -152,7 +183,7 @@ #if __BSD_VISIBLE struct nstat { __dev_t st_dev; /* inode's device */ - ino_t st_ino; /* inode's number */ + __uint32_t st_ino; /* inode's number */ __uint32_t st_mode; /* inode protection mode */ __uint32_t st_nlink; /* number of hard links */ uid_t st_uid; /* user ID of the file's owner */ Modified: soc2011/gk/ino64-head/sys/sys/vnode.h ============================================================================== --- soc2011/gk/ino64-head/sys/sys/vnode.h Fri Jun 17 21:44:13 2011 (r223365) +++ soc2011/gk/ino64-head/sys/sys/vnode.h Fri Jun 17 22:28:55 2011 (r223366) @@ -569,6 +569,7 @@ struct mount; struct nameidata; struct ostat; +struct freebsd8_stat; struct thread; struct proc; struct stat; @@ -590,6 +591,7 @@ int change_root(struct vnode *vp, struct thread *td); void cvtstat(struct stat *st, struct ostat *ost); void freebsd8_cvtnstat(struct stat *sb, struct nstat *nsb); +void freebsd8_cvtstat(struct stat *st, struct freebsd8_stat *ost); int getnewvnode(const char *tag, struct mount *mp, struct vop_vector *vops, struct vnode **vpp); int insmntque1(struct vnode *vp, struct mount *mp,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110617222855.8D9FE106566B>