dqblk
getzfsquota(uid_t user, char *dataset, struct dqblk *zq)
struct dqblk dqblk;
bzero(&dqblk, sizeof (dqblk));
if (getzfsquota(gqa.gqa_uid, fsqp->fsq_devname, &dqblk)) {
(uid_t)gqa.gqa_uid, &dqblk) != 0) {
(uid_t)gqa.gqa_uid, &dqblk) < 0 &&
&dqblk) == 0) {
gqr.gqrslt.rq_btimeleft = dqblk.dqb_btimelimit - tv.tv_sec;
gqr.gqrslt.rq_ftimeleft = dqblk.dqb_ftimelimit - tv.tv_sec;
gqr.gqrslt.rq_bhardlimit = dqblk.dqb_bhardlimit;
gqr.gqrslt.rq_bsoftlimit = dqblk.dqb_bsoftlimit;
gqr.gqrslt.rq_curblocks = dqblk.dqb_curblocks;
gqr.gqrslt.rq_fhardlimit = dqblk.dqb_fhardlimit;
gqr.gqrslt.rq_fsoftlimit = dqblk.dqb_fsoftlimit;
gqr.gqrslt.rq_curfiles = dqblk.dqb_curfiles;
quotactl(int cmd, char *mountp, uid_t uid, struct dqblk *dqp)
struct dqblk *dqp;
if (read(fd, dqp, sizeof (struct dqblk)) != sizeof (struct dqblk)) {
sizeof (struct dqblk))) {
sizeof (struct dqblk));
case sizeof (struct dqblk): /* OK */
sizeof (struct dqblk)) != sizeof (struct dqblk)) {
struct dqblk fsq_dqb;
struct dqblk dqblk;
bzero(&dqblk, sizeof (dqblk));
if (getzfsquota(name, mnt.mnt_special, &dqblk))
mnt.mnt_mountp, uid, &dqblk) != 0 &&
!(vflag && getdiskquota(&mnt, uid, &dqblk))))
rc = getnfsquota(rl[0].host, rl[0].path, uid, &dqblk);
if (dqblk.dqb_bsoftlimit == 0 && dqblk.dqb_bhardlimit == 0 &&
dqblk.dqb_fsoftlimit == 0 && dqblk.dqb_fhardlimit == 0)
prquota(&mnt, &dqblk);
warn(&mnt, &dqblk);
warn(struct mnttab *mntp, struct dqblk *dqp)
prquota(struct mnttab *mntp, struct dqblk *dqp)
getdiskquota(struct mnttab *mntp, uid_t uid, struct dqblk *dqp)
switch (read(fd, dqp, sizeof (struct dqblk))) {
memset((caddr_t)dqp, 0, sizeof (struct dqblk));
case sizeof (struct dqblk): /* OK */
getnfsquota(char *hostp, char *path, uid_t uid, struct dqblk *dqp)
static int getzfsquota(char *, char *, struct dqblk *);
static int getnfsquota(char *, char *, uid_t, struct dqblk *);
getzfsquota(char *user, char *dataset, struct dqblk *zq)
static void warn(struct mnttab *, struct dqblk *);
static void prquota(struct mnttab *, struct dqblk *);
struct dqblk zerodqbuf;
struct dqblk dqbuf;
(void) fread(&dqbuf, sizeof (struct dqblk), 1, qf);
(void) fwrite(&dqbuf, sizeof (struct dqblk), 1, qf);
struct dqblk dqbuf;
(void) fread(&dqbuf, sizeof (struct dqblk), 1, qf);
prquota(uid_t uid, struct dqblk *dqp)
static void prquota(uid_t, struct dqblk *);
sizeof (struct dqblk), dqoff(uid), UIO_SYSSPACE,
bzero(&dqp->dq_dqb, sizeof (struct dqblk));
TRANS_DELTA(ufsvfsp, dqp->dq_mof, sizeof (struct dqblk),
(int)(sizeof (struct dqblk)), NULL, 0);
sizeof (struct dqblk),
struct dqblk newlim;
if (copyin(addr, (caddr_t)&newlim, sizeof (struct dqblk)) != 0) {
sizeof (struct dqblk), dqoff(uid), UIO_SYSSPACE,
struct dqblk dqb;
bcopy(&dqp->dq_dqb, &dqb, sizeof (struct dqblk));
if (error == 0 && copyout(&dqb, addr, sizeof (struct dqblk)) != 0)
dqp->dq_mof, (int)sizeof (struct dqblk), NULL, 0);
TRANS_DELTA(qip->i_ufsvfs, dqp->dq_mof, sizeof (struct dqblk),
struct dqblk dq_dqb; /* actual usage & quotas */
#define dqoff(UID) (((offset_t)(UID) * sizeof (struct dqblk)))