summaryrefslogtreecommitdiff
path: root/lib/quota/mkquota.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/quota/mkquota.c')
-rw-r--r--lib/quota/mkquota.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/quota/mkquota.c b/lib/quota/mkquota.c
index f77e0723..f5ae0e00 100644
--- a/lib/quota/mkquota.c
+++ b/lib/quota/mkquota.c
@@ -458,6 +458,7 @@ static int scan_dquots_callback(struct dquot *dquot, void *cb_data)
dq = get_dq(quota_dict, dquot->dq_id);
dq->dq_id = dquot->dq_id;
+ dq->dq_flags |= DQF_SEEN;
print_dquot("mem", dq);
print_dquot("dsk", dquot);
@@ -572,10 +573,13 @@ errcode_t quota_compare_and_update(quota_ctx_t qctx, int qtype,
ext2_filsys fs = qctx->fs;
struct quota_handle qh;
struct scan_dquots_data scan_data;
+ struct dquot *dq;
+ dnode_t *n;
+ dict_t *dict = qctx->quota_dict[qtype];
ext2_ino_t qf_ino;
errcode_t err = 0;
- if (!qctx->quota_dict[qtype])
+ if (!dict)
goto out;
qf_ino = qtype == USRQUOTA ? fs->super->s_usr_quota_inum :
@@ -595,6 +599,17 @@ errcode_t quota_compare_and_update(quota_ctx_t qctx, int qtype,
log_err("Error scanning dquots");
goto out;
}
+
+ for (n = dict_first(dict); n; n = dict_next(dict, n)) {
+ dq = dnode_get(n);
+ if (!dq)
+ continue;
+ if ((dq->dq_flags & DQF_SEEN) == 0) {
+ fprintf(stderr, "[QUOTA WARNING] "
+ "Missing quota entry ID %d\n", dq->dq_id);
+ scan_data.usage_is_inconsistent = 1;
+ }
+ }
*usage_inconsistent = scan_data.usage_is_inconsistent;
out: