- if (result == -ENOENT || result == -ESTALE) {
- /* If the object is dead, let's check if the object
- * is being migrated to a new object */
- if (result == -ESTALE) {
- struct lu_buf lmv_buf;
-
- lmv_buf.lb_buf = info->mti_xattr_buf;
- lmv_buf.lb_len = sizeof(info->mti_xattr_buf);
- rc = mo_xattr_get(info->mti_env,
- mdt_object_child(parent),
- &lmv_buf, XATTR_NAME_LMV);
- if (rc > 0) {
- struct lmv_mds_md_v1 *lmv;
-
- lmv = lmv_buf.lb_buf;
- if (le32_to_cpu(lmv->lmv_hash_type) &
- LMV_HASH_FLAG_MIGRATION) {
- /* Get the new parent FID and retry */
- mdt_object_unlock_put(info, parent,
- lh, 1);
- mdt_lock_handle_init(lh);
- fid_le_to_cpu(
- (struct lu_fid *)rr->rr_fid1,
- &lmv->lmv_stripe_fids[1]);
- goto again;
- }
- }
- }