diff options
author | Jan Kara <jack@suse.cz> | 2012-06-12 16:03:35 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2012-06-12 16:03:35 +0200 |
commit | 2ef32f7d7edf4cd3295a8a7828229487e37ea0f3 (patch) | |
tree | 24795281ff15ac01a550cf54be954a1693d06d88 | |
parent | 6ba6546dd167297cb9ed69d0257ee245b0faea47 (diff) | |
download | linuxquota-2ef32f7d7edf4cd3295a8a7828229487e37ea0f3.tar.gz |
Fix computation of dynamic rpc block size
The computation counted with block limits as being in bytes. But they are
in quota blocks. Fix the math.
Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r-- | rquota_server.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/rquota_server.c b/rquota_server.c index bb270e6..bf66e4d 100644 --- a/rquota_server.c +++ b/rquota_server.c @@ -103,7 +103,7 @@ static int find_block_shift(qsize_t hard, qsize_t soft, qsize_t cur) value = soft; if (value < cur) value = cur; - value >>= 32 + QUOTABLOCK_BITS; + value >>= 32; for (shift = QUOTABLOCK_BITS; value; shift++) value >>= 1; @@ -116,13 +116,13 @@ static inline void servutil2netdqblk(struct rquota *n, struct util_dqblk *u) int shift; shift = find_block_shift(u->dqb_bhardlimit, u->dqb_bsoftlimit, - u->dqb_curspace); + toqb(u->dqb_curspace)); n->rq_bsize = 1 << shift; - n->rq_bhardlimit = (u->dqb_bhardlimit << QUOTABLOCK_BITS) >> shift; - n->rq_bsoftlimit = (u->dqb_bsoftlimit << QUOTABLOCK_BITS) >> shift; + n->rq_bhardlimit = u->dqb_bhardlimit >> (shift - QUOTABLOCK_BITS); + n->rq_bsoftlimit = u->dqb_bsoftlimit >> (shift - QUOTABLOCK_BITS); n->rq_fhardlimit = u->dqb_ihardlimit; n->rq_fsoftlimit = u->dqb_isoftlimit; - n->rq_curblocks = (u->dqb_curspace + n->rq_bsize - 1) >> shift; + n->rq_curblocks = toqb(u->dqb_curspace) >> (shift - QUOTABLOCK_BITS); n->rq_curfiles = u->dqb_curinodes; time(&now); |