goto record;
/* get HSM attributes */
- obj = mdt_hsm_get_md_hsm(mti, &hai->hai_fid, &mh, NULL);
+ obj = mdt_hsm_get_md_hsm(mti, &hai->hai_fid, &mh);
if (IS_ERR(obj)) {
/* in case of archive remove, Lustre file
* is not mandatory */
goto record;
GOTO(out, rc = PTR_ERR(obj));
}
+ mdt_object_put(mti->mti_env, obj);
/* Check if an action is needed, compare request
* and HSM flags status */
struct cdt_restore_handle *crh;
struct mdt_object *child;
- OBD_ALLOC_PTR(crh);
+ OBD_SLAB_ALLOC_PTR(crh, mdt_hsm_cdt_kmem);
if (crh == NULL)
GOTO(out, rc = -ENOMEM);
CERROR("%s: cannot take layout lock for "
DFID": rc = %d\n", mdt_obd_name(mdt),
PFID(&crh->crh_fid), rc);
- OBD_FREE_PTR(crh);
+ OBD_SLAB_FREE_PTR(crh, mdt_hsm_cdt_kmem);
GOTO(out, rc);
}
/* we choose to not keep a keep a reference
* very long */
mdt_object_put(mti->mti_env, child);
- down(&cdt->cdt_restore_lock);
+ mutex_lock(&cdt->cdt_restore_lock);
cfs_list_add_tail(&crh->crh_list,
&cdt->cdt_restore_hdl);
- up(&cdt->cdt_restore_lock);
+ mutex_unlock(&cdt->cdt_restore_lock);
}
record:
/* record request */
rc = -ENODATA;
else
rc = 0;
- EXIT;
+
+ GOTO(out, rc);
out:
/* if work has been added, wake up coordinator */
if ((rc == 0) || (rc == -ENODATA))
RETURN(-EINVAL);
car = mdt_cdt_find_request(cdt, 0, &hai->hai_fid);
- if (IS_ERR(car)) {
+ if (car == NULL) {
hai->hai_cookie = 0;
hai->hai_action = HSMA_NONE;
} else {
if (!fid_is_sane(fid))
RETURN(rc);
- down(&cdt->cdt_restore_lock);
+ mutex_lock(&cdt->cdt_restore_lock);
cfs_list_for_each_safe(pos, tmp, &cdt->cdt_restore_hdl) {
crh = cfs_list_entry(pos, struct cdt_restore_handle, crh_list);
if (lu_fid_eq(&crh->crh_fid, fid)) {
break;
}
}
- up(&cdt->cdt_restore_lock);
+ mutex_unlock(&cdt->cdt_restore_lock);
RETURN(rc);
}
struct cdt_agent_req *car;
car = mdt_cdt_find_request(cdt, hai->hai_cookie, NULL);
- if (IS_ERR(car)) {
+ if (car == NULL) {
hai->hai_cookie = 0;
} else {
__u64 data_moved;