X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdt%2Fmdt_xattr.c;h=a7c69cfa8d5c4e8dfd8e1fd1cdde48dc3b08a7cd;hp=7d7e15d7fedbddc1bcd73d43769825f1665da7a0;hb=b046468f58a1f40e85cb59ed9abf75fd2fd5ea5a;hpb=4fab3b2dfd4225f096e9a38ac14bcf61c41a81d4 diff --git a/lustre/mdt/mdt_xattr.c b/lustre/mdt/mdt_xattr.c index 7d7e15d..a7c69cf 100644 --- a/lustre/mdt/mdt_xattr.c +++ b/lustre/mdt/mdt_xattr.c @@ -182,10 +182,11 @@ static int mdt_getxattr_all(struct mdt_thread_info *info, eadatahead = buf->lb_buf; /* Fill out EADATA first */ - eadatasize = mo_xattr_list(env, next, buf); - if (eadatasize < 0) - GOTO(out, rc = eadatasize); + rc = mo_xattr_list(env, next, buf); + if (rc < 0) + GOTO(out_shrink, rc); + eadatasize = rc; eadatatail = eadatahead + eadatasize; v = req_capsule_server_get(info->mti_pill, &RMF_EAVALS); @@ -197,13 +198,19 @@ static int mdt_getxattr_all(struct mdt_thread_info *info, buf->lb_len = reqbody->mbo_eadatasize - eavallen; rc = mdt_getxattr_one(info, b, next, buf, med, uc); if (rc < 0) - GOTO(out, rc); + GOTO(out_shrink, rc); sizes[eavallens] = rc; eavallens++; eavallen += rc; } +out_shrink: + if (rc < 0) { + eadatasize = 0; + eavallens = 0; + eavallen = 0; + } repbody->mbo_aclsize = eavallen; repbody->mbo_max_mdsize = eavallens; @@ -212,8 +219,8 @@ static int mdt_getxattr_all(struct mdt_thread_info *info, eavallens * sizeof(__u32), RCL_SERVER); req_capsule_shrink(info->mti_pill, &RMF_EADATA, eadatasize, RCL_SERVER); - GOTO(out, rc = eadatasize); -out: + if (rc >= 0) + RETURN(eadatasize); return rc; }