+
+ down_read(&obj->opo_invalidate_sem);
+ if (invalidated != atomic_read(&obj->opo_invalidate_seq)) {
+ /* invalidated has been requested, we can't cache the result */
+ if (rc < 0) {
+ if (rc == -ENOENT)
+ dt->do_lu.lo_header->loh_attr &= ~LOHA_EXISTS;
+ GOTO(out, rc);
+ }
+ reply = req_capsule_server_sized_get(&req->rq_pill,
+ &RMF_OUT_UPDATE_REPLY,
+ OUT_UPDATE_REPLY_SIZE);
+ if (reply->ourp_magic != UPDATE_REPLY_MAGIC) {
+ CERROR("%s: Wrong version %x expected %x "DFID
+ ": rc = %d\n", dname, reply->ourp_magic,
+ UPDATE_REPLY_MAGIC,
+ PFID(lu_object_fid(&dt->do_lu)), -EPROTO);
+ GOTO(out, rc = -EPROTO);
+ }
+ rc = object_update_result_data_get(reply, rbuf, 0);
+ GOTO(out, rc);
+ }
+