X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftarget%2Fout_handler.c;h=7781ff35d190d6fc1264726849986df4dec7f590;hp=1cf8c21bea65cebb0367a4a6170d4ce24e9057c8;hb=555d02f47401340182b47b3245a657b52fc3e68a;hpb=5801dad47e4727a44b6343a3f7f875d7992f29a3 diff --git a/lustre/target/out_handler.c b/lustre/target/out_handler.c index 1cf8c21..7781ff3 100644 --- a/lustre/target/out_handler.c +++ b/lustre/target/out_handler.c @@ -277,19 +277,22 @@ static int out_xattr_get(struct tgt_session_info *tsi) lbuf->lb_len = (int)tti->tti_u.update.tti_update->ou_result_size; lbuf->lb_buf = update_result->our_data; if (lbuf->lb_len == 0) - lbuf->lb_buf = 0; + lbuf->lb_buf = NULL; dt_read_lock(env, obj, MOR_TGT_CHILD); rc = dt_xattr_get(env, obj, lbuf, name); dt_read_unlock(env, obj); - if (rc < 0) + if (rc <= 0) { lbuf->lb_len = 0; - CDEBUG(D_INFO, "%s: "DFID" get xattr %s len %d\n", - tgt_name(tsi->tsi_tgt), PFID(lu_object_fid(&obj->do_lu)), - name, (int)lbuf->lb_len); + if (unlikely(!rc)) + rc = -ENODATA; + } else if (lbuf->lb_buf) { + lbuf->lb_len = rc; + } - GOTO(out, rc); + CDEBUG(D_INFO, "%s: "DFID" get xattr %s len %d: rc = %d\n", + tgt_name(tsi->tsi_tgt), PFID(lu_object_fid(&obj->do_lu)), + name, (int)lbuf->lb_len, rc); -out: object_update_result_insert(reply, lbuf->lb_buf, lbuf->lb_len, idx, rc); RETURN(0); }