X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-ldiskfs%2Fosd_quota_fmt.c;h=1883cd8a3557f2a26fdace1b5c0ec6fca92bb235;hb=90fd0cd449b9ae3fbff5a99e0edcf288799037c0;hp=0088d001a3918722b6c9961ad82583eb7d69f2be;hpb=f2a404d1fec2287ef9ffda105727e8cd3f8e0b7b;p=fs%2Flustre-release.git diff --git a/lustre/osd-ldiskfs/osd_quota_fmt.c b/lustre/osd-ldiskfs/osd_quota_fmt.c index 0088d00..1883cd8 100644 --- a/lustre/osd-ldiskfs/osd_quota_fmt.c +++ b/lustre/osd-ldiskfs/osd_quota_fmt.c @@ -21,7 +21,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2012, 2016, Intel Corporation. * Use is subject to license terms. * * Lustre administrative quota format. @@ -64,28 +64,8 @@ static ssize_t quota_read_blk(const struct lu_env *env, ENTRY; memset(buf, 0, LUSTRE_DQBLKSIZE); - -#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2,7,50,0) - /* type is set as -1 when reading old admin quota file */ - if (type != USRQUOTA && type != GRPQUOTA) { - struct lu_buf lu_buffer; - loff_t pos; - - lu_buffer.lb_buf = buf; - lu_buffer.lb_len = LUSTRE_DQBLKSIZE; - pos = blk << LUSTRE_DQBLKSIZE_BITS; - - ret = dt_record_read(env, &obj->oo_dt, &lu_buffer, &pos); - - if (ret == 0) - ret = LUSTRE_DQBLKSIZE; - else if (ret == -EBADR || ret == -EFAULT) - ret = 0; - RETURN(ret); - } -#else -#warning "remove old quota compatibility code" -#endif + LASSERTF((type == USRQUOTA || type == GRPQUOTA || type == PRJQUOTA), + "type=%d\n", type); ret = sb->s_op->quota_read(sb, type, buf, LUSTRE_DQBLKSIZE, blk << LUSTRE_DQBLKSIZE_BITS); @@ -227,7 +207,7 @@ int walk_block_dqentry(const struct lu_env *env, struct osd_object *obj, 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); } @@ -244,7 +224,7 @@ int walk_block_dqentry(const struct lu_env *env, struct osd_object *obj, } 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); @@ -297,7 +277,7 @@ int walk_tree_dqentry(const struct lu_env *env, struct osd_object *obj, } ret = 1; - for (; index <= 0xff && ret > 0; index++) { + for (; index <= 0xff; index++) { blk = le32_to_cpu(ref[index]); if (!blk) /* No reference */ continue; @@ -307,13 +287,14 @@ int walk_tree_dqentry(const struct lu_env *env, struct osd_object *obj, 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; + if (ret <= 0) + break; } + it->oiq_blk[depth + 1] = blk; + it->oiq_index[depth] = index; + out_buf: freedqbuf(buf); RETURN(ret);