- struct cdt_restore_handle *crh;
- struct mdt_object *child;
-
- OBD_SLAB_ALLOC_PTR(crh, mdt_hsm_cdt_kmem);
- if (crh == NULL)
- GOTO(out, rc = -ENOMEM);
-
- crh->crh_fid = hai->hai_fid;
- /* in V1 only whole file is supported
- crh->extent.start = hai->hai_extent.offset;
- crh->extent.end = hai->hai_extent.offset +
- hai->hai_extent.length;
- */
- crh->crh_extent.start = 0;
- crh->crh_extent.end = OBD_OBJECT_EOF;
-
- mdt_lock_reg_init(&crh->crh_lh, LCK_EX);
- child = mdt_object_find_lock(mti, &crh->crh_fid,
- &crh->crh_lh,
- MDS_INODELOCK_LAYOUT);
- if (IS_ERR(child)) {
- rc = PTR_ERR(child);
- CERROR("%s: cannot take layout lock for "
- DFID": rc = %d\n", mdt_obd_name(mdt),
- PFID(&crh->crh_fid), rc);
- OBD_SLAB_FREE_PTR(crh, mdt_hsm_cdt_kmem);
+ /* in V1 only whole file is supported. */
+ if (hai->hai_extent.offset != 0)
+ GOTO(out, rc = -EPROTO);
+
+ rc = cdt_restore_handle_add(mti, cdt, &hai->hai_fid,
+ &hai->hai_extent);
+ if (rc < 0)