* GPL HEADER END
*/
/*
- * Copyright (c) 2011, 2012, Whamcloud, Inc.
+ * Copyright (c) 2012, 2015, Intel Corporation.
* Use is subject to license terms.
*
* Lustre administrative quota format.
static inline dqbuf_t getdqbuf(void)
{
- dqbuf_t buf = cfs_alloc(LUSTRE_DQBLKSIZE, CFS_ALLOC_IO);
+ dqbuf_t buf = kmalloc(LUSTRE_DQBLKSIZE, GFP_NOFS);
if (!buf)
CWARN("Not enough memory for quota buffers.\n");
return buf;
static inline void freedqbuf(dqbuf_t buf)
{
- cfs_free(buf);
+ kfree(buf);
}
/**
ENTRY;
memset(buf, 0, LUSTRE_DQBLKSIZE);
+ LASSERTF((type == USRQUOTA || type == GRPQUOTA), "type=%d\n", type);
+
ret = sb->s_op->quota_read(sb, type, buf, LUSTRE_DQBLKSIZE,
blk << LUSTRE_DQBLKSIZE_BITS);
if (!buf)
RETURN(-ENOMEM);
- ret = quota_read_blk(env, obj, 0, blk, buf);
+ ret = quota_read_blk(env, obj, type, blk, buf);
if (ret < 0) {
CERROR("Can't read quota tree block %u.\n", blk);
GOTO(out_buf, ret);
int type, uint blk, uint index,
struct osd_it_quota *it)
{
- dqbuf_t buf = getdqbuf();
+ dqbuf_t buf;
loff_t ret = 0;
struct lustre_disk_dqdbheader *dqhead;
int i, dqblk_sz;
ENTRY;
/* check if the leaf block has been processed before */
- cfs_list_for_each_entry(leaf, &it->oiq_list, oql_link) {
+ list_for_each_entry(leaf, &it->oiq_list, oql_link) {
if (leaf->oql_blk == blk)
RETURN(1);
}
+ buf = getdqbuf();
dqhead = (struct lustre_disk_dqdbheader *)buf;
dqblk_sz = sizeof(struct lustre_disk_dqblk_v2);
if (!buf)
}
ret = 1;
- if (!le32_to_cpu(dqhead->dqdh_entries))
+ if (!le16_to_cpu(dqhead->dqdh_entries))
GOTO(out_buf, ret);
ddquot = (struct lustre_disk_dqblk_v2 *)GETENTRIES(buf);
depth + 1, 0, it);
else
ret = walk_block_dqentry(env, obj, type, blk, 0, it);
- }
- if (ret == 0) { /* Entry found */
- it->oiq_blk[depth + 1] = blk;
- it->oiq_index[depth] = index;
}
+ it->oiq_blk[depth + 1] = blk;
+ it->oiq_index[depth] = index;
out_buf:
freedqbuf(buf);