summaryrefslogtreecommitdiff
path: root/quotaio_v1.c
diff options
context:
space:
mode:
Diffstat (limited to 'quotaio_v1.c')
-rw-r--r--quotaio_v1.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/quotaio_v1.c b/quotaio_v1.c
index 0edbc16..61bd93e 100644
--- a/quotaio_v1.c
+++ b/quotaio_v1.c
@@ -174,6 +174,10 @@ static int v1_init_io(struct quota_handle *h)
h->qh_info.dqi_bgrace = MAX_DQ_TIME;
if (!h->qh_info.dqi_igrace)
h->qh_info.dqi_igrace = MAX_IQ_TIME;
+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0;
+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0;
+ h->qh_info.dqi_max_b_usage = ((uint64_t)(~(uint32_t)0)) << V1_DQBLK_SIZE_BITS;
+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0;
return 0;
}
@@ -191,6 +195,10 @@ static int v1_new_io(struct quota_handle *h)
ddqblk.dqb_itime = MAX_IQ_TIME;
h->qh_info.dqi_bgrace = MAX_DQ_TIME;
h->qh_info.dqi_igrace = MAX_IQ_TIME;
+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0;
+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0;
+ h->qh_info.dqi_max_b_usage = ((uint64_t)(~(uint32_t)0)) << V1_DQBLK_SIZE_BITS;
+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0;
lseek(h->qh_fd, 0, SEEK_SET);
if (write(h->qh_fd, &ddqblk, sizeof(ddqblk)) != sizeof(ddqblk))
return -1;
@@ -327,6 +335,10 @@ static int v1_commit_dquot(struct dquot *dquot, int flags)
}
}
else {
+ if (check_dquot_range(dquot) < 0) {
+ errno = ERANGE;
+ return -1;
+ }
v1_mem2diskdqblk(&ddqblk, &dquot->dq_dqb);
lseek(h->qh_fd, (long)V1_DQOFF(dquot->dq_id), SEEK_SET);
if (write(h->qh_fd, &ddqblk, sizeof(ddqblk)) != sizeof(ddqblk))
@@ -348,11 +360,6 @@ static int v1_scan_dquots(struct quota_handle *h, int (*process_dquot) (struct d
struct dquot *dquot = get_empty_dquot();
qid_t id = 0;
- if (QIO_ENABLED(h)) /* Kernel uses same file? */
- if (quotactl(QCMD((kernel_iface == IFACE_GENERIC) ? Q_SYNC : Q_6_5_SYNC, h->qh_type),
- h->qh_quotadev, 0, NULL) < 0)
- die(4, _("Cannot sync quotas on device %s: %s\n"), h->qh_quotadev,
- strerror(errno));
memset(dquot, 0, sizeof(*dquot));
dquot->dq_h = h;
lseek(h->qh_fd, 0, SEEK_SET);