Module Name:    src
Committed By:   dholland
Date:           Wed Feb  1 05:39:28 UTC 2012

Modified Files:
        src/sys/kern: vfs_syscalls.c
        src/sys/sys: vfs_syscalls.h

Log Message:
Split out a do_sys_quotactl for compat_netbsd32.


To generate a diff of this commit:
cvs rdiff -u -r1.444 -r1.445 src/sys/kern/vfs_syscalls.c
cvs rdiff -u -r1.16 -r1.17 src/sys/sys/vfs_syscalls.h

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

Modified files:

Index: src/sys/kern/vfs_syscalls.c
diff -u src/sys/kern/vfs_syscalls.c:1.444 src/sys/kern/vfs_syscalls.c:1.445
--- src/sys/kern/vfs_syscalls.c:1.444	Wed Feb  1 05:34:41 2012
+++ src/sys/kern/vfs_syscalls.c	Wed Feb  1 05:39:28 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_syscalls.c,v 1.444 2012/02/01 05:34:41 dholland Exp $	*/
+/*	$NetBSD: vfs_syscalls.c,v 1.445 2012/02/01 05:39:28 dholland Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.444 2012/02/01 05:34:41 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.445 2012/02/01 05:39:28 dholland Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_fileassoc.h"
@@ -907,107 +907,113 @@ do_sys_quotactl_quotaoff(struct mount *m
 	return vfs_quotactl_quotaoff(mp, idtype);
 }
 
-/* ARGSUSED */
 int
-sys___quotactl(struct lwp *l, const struct sys___quotactl_args *uap,
-    register_t *retval)
+do_sys_quotactl(const char *path_u, const struct quotactl_args *args)
 {
-	/* {
-		syscallarg(const char *) path;
-		syscallarg(struct quotactl_args *) args;
-	} */
 	struct mount *mp;
 	struct vnode *vp;
-	struct quotactl_args args;
 	int error;
 
-	error = namei_simple_user(SCARG(uap, path),
-				NSM_FOLLOW_TRYEMULROOT, &vp);
+	error = namei_simple_user(path_u, NSM_FOLLOW_TRYEMULROOT, &vp);
 	if (error != 0)
 		return (error);
 	mp = vp->v_mount;
 
-	error = copyin(SCARG(uap, args), &args, sizeof(args));
-	if (error) {
-		goto fail;
-	}
-
-	switch (args.qc_op) {
+	switch (args->qc_op) {
 	    case QUOTACTL_STAT:
-		error = do_sys_quotactl_stat(mp, args.u.stat.qc_ret);
+		error = do_sys_quotactl_stat(mp, args->u.stat.qc_ret);
 		break;
 	    case QUOTACTL_IDTYPESTAT:
 		error = do_sys_quotactl_idtypestat(mp,
-				args.u.idtypestat.qc_idtype,
-				args.u.idtypestat.qc_info);
+				args->u.idtypestat.qc_idtype,
+				args->u.idtypestat.qc_info);
 		break;
 	    case QUOTACTL_OBJTYPESTAT:
 		error = do_sys_quotactl_objtypestat(mp,
-				args.u.objtypestat.qc_objtype,
-				args.u.objtypestat.qc_info);
+				args->u.objtypestat.qc_objtype,
+				args->u.objtypestat.qc_info);
 		break;
 	    case QUOTACTL_GET:
 		error = do_sys_quotactl_get(mp,
-				args.u.get.qc_key,
-				args.u.get.qc_ret);
+				args->u.get.qc_key,
+				args->u.get.qc_ret);
 		break;
 	    case QUOTACTL_PUT:
 		error = do_sys_quotactl_put(mp,
-				args.u.put.qc_key,
-				args.u.put.qc_val);
+				args->u.put.qc_key,
+				args->u.put.qc_val);
 		break;
 	    case QUOTACTL_DELETE:
-		error = do_sys_quotactl_delete(mp, args.u.delete.qc_key);
+		error = do_sys_quotactl_delete(mp, args->u.delete.qc_key);
 		break;
 	    case QUOTACTL_CURSOROPEN:
 		error = do_sys_quotactl_cursoropen(mp,
-				args.u.cursoropen.qc_cursor);
+				args->u.cursoropen.qc_cursor);
 		break;
 	    case QUOTACTL_CURSORCLOSE:
 		error = do_sys_quotactl_cursorclose(mp,
-				args.u.cursorclose.qc_cursor);
+				args->u.cursorclose.qc_cursor);
 		break;
 	    case QUOTACTL_CURSORSKIPIDTYPE:
 		error = do_sys_quotactl_cursorskipidtype(mp,
-				args.u.cursorskipidtype.qc_cursor,
-				args.u.cursorskipidtype.qc_idtype);
+				args->u.cursorskipidtype.qc_cursor,
+				args->u.cursorskipidtype.qc_idtype);
 		break;
 	    case QUOTACTL_CURSORGET:
 		error = do_sys_quotactl_cursorget(mp,
-				args.u.cursorget.qc_cursor,
-				args.u.cursorget.qc_keys,
-				args.u.cursorget.qc_vals,
-				args.u.cursorget.qc_maxnum,
-				args.u.cursorget.qc_ret);
+				args->u.cursorget.qc_cursor,
+				args->u.cursorget.qc_keys,
+				args->u.cursorget.qc_vals,
+				args->u.cursorget.qc_maxnum,
+				args->u.cursorget.qc_ret);
 		break;
 	    case QUOTACTL_CURSORATEND:
 		error = do_sys_quotactl_cursoratend(mp,
-				args.u.cursoratend.qc_cursor,
-				args.u.cursoratend.qc_ret);
+				args->u.cursoratend.qc_cursor,
+				args->u.cursoratend.qc_ret);
 		break;
 	    case QUOTACTL_CURSORREWIND:
 		error = do_sys_quotactl_cursorrewind(mp,
-				args.u.cursorrewind.qc_cursor);
+				args->u.cursorrewind.qc_cursor);
 		break;
 	    case QUOTACTL_QUOTAON:
 		error = do_sys_quotactl_quotaon(mp,
-				args.u.quotaon.qc_idtype,
-				args.u.quotaon.qc_quotafile);
+				args->u.quotaon.qc_idtype,
+				args->u.quotaon.qc_quotafile);
 		break;
 	    case QUOTACTL_QUOTAOFF:
 		error = do_sys_quotactl_quotaoff(mp,
-				args.u.quotaoff.qc_idtype);
+				args->u.quotaoff.qc_idtype);
 		break;
 	    default:
 		error = EINVAL;
 		break;
 	}
 
-fail:
 	vrele(vp);
 	return error;
 }
 
+/* ARGSUSED */
+int
+sys___quotactl(struct lwp *l, const struct sys___quotactl_args *uap,
+    register_t *retval)
+{
+	/* {
+		syscallarg(const char *) path;
+		syscallarg(struct quotactl_args *) args;
+	} */
+	struct quotactl_args args;
+	int error;
+
+	error = copyin(SCARG(uap, args), &args, sizeof(args));
+	if (error) {
+		return error;
+	}
+
+	return do_sys_quotactl(SCARG(uap, path), &args);
+}
+
 int
 dostatvfs(struct mount *mp, struct statvfs *sp, struct lwp *l, int flags,
     int root)

Index: src/sys/sys/vfs_syscalls.h
diff -u src/sys/sys/vfs_syscalls.h:1.16 src/sys/sys/vfs_syscalls.h:1.17
--- src/sys/sys/vfs_syscalls.h:1.16	Wed Aug 17 09:29:59 2011
+++ src/sys/sys/vfs_syscalls.h	Wed Feb  1 05:39:28 2012
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_syscalls.h,v 1.16 2011/08/17 09:29:59 manu Exp $        */
+/*     $NetBSD: vfs_syscalls.h,v 1.17 2012/02/01 05:39:28 dholland Exp $        */
 
 /*
  * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -34,6 +34,7 @@
 
 struct stat;
 struct statvfs;
+struct quotactl_args;
 
 extern int dovfsusermount;
 
@@ -68,6 +69,7 @@ int	do_sys_mknod(struct lwp *, const cha
     enum uio_seg);
 int	do_sys_mkdir(const char *, mode_t, enum uio_seg);
 int	do_sys_symlink(const char *, const char *, enum uio_seg);
+int	do_sys_quotactl(const char *, const struct quotactl_args *);
 void	do_sys_sync(struct lwp *);
 
 int	chdir_lookup(const char *, int, struct vnode **, struct lwp *);

Reply via email to