diff options
| author | Mike Pritchard <mpp@FreeBSD.org> | 2007-02-01 02:13:53 +0000 |
|---|---|---|
| committer | Mike Pritchard <mpp@FreeBSD.org> | 2007-02-01 02:13:53 +0000 |
| commit | 6c62e3fce9846916e18e7da0898198fc4570eba3 (patch) | |
| tree | 706e29c13e0c7a343684b9f0eec57b39a4c48055 /sys/ufs | |
| parent | 3c0508582d8007b082348a031fdb12b8149bc39d (diff) | |
Notes
Diffstat (limited to 'sys/ufs')
| -rw-r--r-- | sys/ufs/ufs/ufs_vfsops.c | 27 |
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: |
