summaryrefslogtreecommitdiff
path: root/sys/ufs
diff options
context:
space:
mode:
authorMike Pritchard <mpp@FreeBSD.org>2007-02-01 02:13:53 +0000
committerMike Pritchard <mpp@FreeBSD.org>2007-02-01 02:13:53 +0000
commit6c62e3fce9846916e18e7da0898198fc4570eba3 (patch)
tree706e29c13e0c7a343684b9f0eec57b39a4c48055 /sys/ufs
parent3c0508582d8007b082348a031fdb12b8149bc39d (diff)
Notes
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_vfsops.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/sys/ufs/ufs/ufs_vfsops.c b/sys/ufs/ufs/ufs_vfsops.c
index 8fdf71fe76f5..1280cdbe9537 100644
--- a/sys/ufs/ufs/ufs_vfsops.c
+++ b/sys/ufs/ufs/ufs_vfsops.c
@@ -86,10 +86,10 @@ ufs_root(mp, flags, vpp, td)
* Do operations associated with quotas
*/
int
-ufs_quotactl(mp, cmds, uid, arg, td)
+ufs_quotactl(mp, cmds, id, arg, td)
struct mount *mp;
int cmds;
- uid_t uid;
+ uid_t id;
void *arg;
struct thread *td;
{
@@ -98,10 +98,23 @@ ufs_quotactl(mp, cmds, uid, arg, td)
#else
int cmd, type, error;
- if (uid == -1)
- uid = td->td_ucred->cr_ruid;
cmd = cmds >> SUBCMDSHIFT;
type = cmds & SUBCMDMASK;
+ if (id == -1) {
+ switch (type) {
+
+ case USRQUOTA:
+ id = td->td_ucred->cr_ruid;
+ break;
+
+ case GRPQUOTA:
+ id = td->td_ucred->cr_rgid;
+ break;
+
+ default:
+ return (EINVAL);
+ }
+ }
if ((u_int)type >= MAXQUOTAS)
return (EINVAL);
@@ -118,15 +131,15 @@ ufs_quotactl(mp, cmds, uid, arg, td)
break;
case Q_SETQUOTA:
- error = setquota(td, mp, uid, type, arg);
+ error = setquota(td, mp, id, type, arg);
break;
case Q_SETUSE:
- error = setuse(td, mp, uid, type, arg);
+ error = setuse(td, mp, id, type, arg);
break;
case Q_GETQUOTA:
- error = getquota(td, mp, uid, type, arg);
+ error = getquota(td, mp, id, type, arg);
break;
case Q_SYNC: