From owner-svn-src-projects@FreeBSD.ORG Fri Aug 26 17:45:57 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62F241065676; Fri, 26 Aug 2011 17:45:57 +0000 (UTC) (envelope-from mdf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 384648FC15; Fri, 26 Aug 2011 17:45:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p7QHjv1b064836; Fri, 26 Aug 2011 17:45:57 GMT (envelope-from mdf@svn.freebsd.org) Received: (from mdf@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p7QHjva1064833; Fri, 26 Aug 2011 17:45:57 GMT (envelope-from mdf@svn.freebsd.org) Message-Id: <201108261745.p7QHjva1064833@svn.freebsd.org> From: Matthew D Fleming Date: Fri, 26 Aug 2011 17:45:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r225198 - in projects/ino64/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Aug 2011 17:45:57 -0000 Author: mdf Date: Fri Aug 26 17:45:56 2011 New Revision: 225198 URL: http://svn.freebsd.org/changeset/base/225198 Log: Add kern_fhstat() wrapper, adjust fhstat() to use it. GSoC r222844. Gode by Gleb Kurtsou. Modified: projects/ino64/sys/kern/vfs_syscalls.c projects/ino64/sys/sys/syscallsubr.h Modified: projects/ino64/sys/kern/vfs_syscalls.c ============================================================================== --- projects/ino64/sys/kern/vfs_syscalls.c Fri Aug 26 17:37:09 2011 (r225197) +++ projects/ino64/sys/kern/vfs_syscalls.c Fri Aug 26 17:45:56 2011 (r225198) @@ -4637,15 +4637,25 @@ struct fhstat_args { }; #endif int -fhstat(td, uap) - struct thread *td; - register struct fhstat_args /* { - struct fhandle *u_fhp; - struct stat *sb; - } */ *uap; +fhstat(struct thread *td, struct fhstat_args *uap) { struct stat sb; - fhandle_t fh; + struct fhandle fh; + int error; + + error = copyin(uap->u_fhp, &fh, sizeof(fh)); + if (error != 0) + return (error); + error = kern_fhstat(td, fh, &sb); + if (error != 0) + return (error); + error = copyout(&sb, uap->sb, sizeof(sb)); + return (error); +} + +int +kern_fhstat(struct thread *td, struct fhandle fh, struct stat *sb) +{ struct mount *mp; struct vnode *vp; int vfslocked; @@ -4654,9 +4664,6 @@ fhstat(td, uap) error = priv_check(td, PRIV_VFS_FHSTAT); if (error) return (error); - error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t)); - if (error) - return (error); if ((mp = vfs_busyfs(&fh.fh_fsid)) == NULL) return (ESTALE); vfslocked = VFS_LOCK_GIANT(mp); @@ -4666,12 +4673,9 @@ fhstat(td, uap) VFS_UNLOCK_GIANT(vfslocked); return (error); } - error = vn_stat(vp, &sb, td->td_ucred, NOCRED, td); + error = vn_stat(vp, sb, td->td_ucred, NOCRED, td); vput(vp); VFS_UNLOCK_GIANT(vfslocked); - if (error) - return (error); - error = copyout(&sb, uap->sb, sizeof(sb)); return (error); } Modified: projects/ino64/sys/sys/syscallsubr.h ============================================================================== --- projects/ino64/sys/sys/syscallsubr.h Fri Aug 26 17:37:09 2011 (r225197) +++ projects/ino64/sys/sys/syscallsubr.h Fri Aug 26 17:45:56 2011 (r225198) @@ -89,6 +89,7 @@ int kern_fchmodat(struct thread *td, int int kern_fchownat(struct thread *td, int fd, char *path, enum uio_seg pathseg, int uid, int gid, int flag); int kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg); +int kern_fhstat(struct thread *td, fhandle_t fh, struct stat *buf); int kern_fhstatfs(struct thread *td, fhandle_t fh, struct statfs *buf); int kern_fstat(struct thread *td, int fd, struct stat *sbp); int kern_fstatfs(struct thread *td, int fd, struct statfs *buf);