if (req == NULL)
GOTO(out, rc = -ENOMEM);
+ mdc_pack_body(req, NULL, NULL, OBD_MD_FLRMTPERM, 0, 0, 0);
+
/* Copy hsm_progress struct */
req_hpk = req_capsule_client_get(&req->rq_pill, &RMF_MDS_HSM_PROGRESS);
- LASSERT(req_hpk);
+ if (req_hpk == NULL)
+ GOTO(out, rc = -EPROTO);
+
*req_hpk = *hpk;
ptlrpc_request_set_replen(req);
if (req == NULL)
GOTO(out, rc = -ENOMEM);
+ mdc_pack_body(req, NULL, NULL, OBD_MD_FLRMTPERM, 0, 0, 0);
+
/* Copy hsm_progress struct */
archive_mask = req_capsule_client_get(&req->rq_pill,
&RMF_MDS_HSM_ARCHIVE);
- LASSERT(archive_mask);
+ if (archive_mask == NULL)
+ GOTO(out, rc = -EPROTO);
+
*archive_mask = archives;
ptlrpc_request_set_replen(req);
if (req == NULL)
GOTO(out, rc = -ENOMEM);
+ mdc_pack_body(req, NULL, NULL, OBD_MD_FLRMTPERM, 0, 0, 0);
+
ptlrpc_request_set_replen(req);
rc = mdc_queue_wait(req);
/* Copy states */
req_hss = req_capsule_client_get(&req->rq_pill, &RMF_HSM_STATE_SET);
- LASSERT(req_hss);
+ if (req_hss == NULL)
+ GOTO(out, rc = -EPROTO);
*req_hss = *hss;
ptlrpc_request_set_replen(req);
/* Copy hsm_request struct */
req_hr = req_capsule_client_get(&req->rq_pill, &RMF_MDS_HSM_REQUEST);
- LASSERT(req_hr);
+ if (req_hr == NULL)
+ GOTO(out, rc = -EPROTO);
*req_hr = hur->hur_request;
/* Copy hsm_user_item structs */
req_hui = req_capsule_client_get(&req->rq_pill, &RMF_MDS_HSM_USER_ITEM);
- LASSERT(req_hui);
+ if (req_hui == NULL)
+ GOTO(out, rc = -EPROTO);
memcpy(req_hui, hur->hur_user_item,
hur->hur_request.hr_itemcount * sizeof(struct hsm_user_item));
/* Copy opaque field */
req_opaque = req_capsule_client_get(&req->rq_pill, &RMF_GENERIC_DATA);
- LASSERT(req_opaque);
+ if (req_opaque == NULL)
+ GOTO(out, rc = -EPROTO);
memcpy(req_opaque, hur_data(hur), hur->hur_request.hr_data_len);
ptlrpc_request_set_replen(req);
*/
int mdt_hsm_progress(struct mdt_thread_info *info)
{
+ struct mdt_body *body;
struct hsm_progress_kernel *hpk;
int rc;
ENTRY;
+ body = req_capsule_client_get(info->mti_pill, &RMF_MDT_BODY);
+ if (body == NULL)
+ RETURN(-EPROTO);
+
hpk = req_capsule_client_get(info->mti_pill, &RMF_MDS_HSM_PROGRESS);
if (hpk == NULL)
RETURN(-EPROTO);
int mdt_hsm_ct_register(struct mdt_thread_info *info)
{
- struct ptlrpc_request *req = mdt_info_req(info);
- __u32 *archives;
- int rc;
+ struct mdt_body *body;
+ struct ptlrpc_request *req = mdt_info_req(info);
+ __u32 *archives;
+ int rc;
ENTRY;
+ body = req_capsule_client_get(info->mti_pill, &RMF_MDT_BODY);
+ if (body == NULL)
+ RETURN(-EPROTO);
+
archives = req_capsule_client_get(info->mti_pill, &RMF_MDS_HSM_ARCHIVE);
if (archives == NULL)
RETURN(-EPROTO);
int mdt_hsm_ct_unregister(struct mdt_thread_info *info)
{
- struct ptlrpc_request *req = mdt_info_req(info);
- int rc;
+ struct mdt_body *body;
+ struct ptlrpc_request *req = mdt_info_req(info);
+ int rc;
ENTRY;
+ body = req_capsule_client_get(info->mti_pill, &RMF_MDT_BODY);
+ if (body == NULL)
+ RETURN(-EPROTO);
+
/* XXX: directly include this function here? */
rc = mdt_hsm_agent_unregister(info, &req->rq_export->exp_client_uuid);
DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_IS_SUBDIR, mdt_is_subdir),
DEF_MDT_HDL(0, MDS_QUOTACHECK, mdt_quotacheck),
DEF_MDT_HDL(0, MDS_QUOTACTL, mdt_quotactl),
-DEF_MDT_HDL(0 | HABEO_REFERO, MDS_HSM_PROGRESS, mdt_hsm_progress),
-DEF_MDT_HDL(0 | HABEO_REFERO, MDS_HSM_CT_REGISTER,
+DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_PROGRESS, mdt_hsm_progress),
+DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_CT_REGISTER,
mdt_hsm_ct_register),
-DEF_MDT_HDL(0 | HABEO_REFERO, MDS_HSM_CT_UNREGISTER,
+DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_CT_UNREGISTER,
mdt_hsm_ct_unregister),
DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_STATE_GET,
mdt_hsm_state_get),
DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_STATE_SET,
mdt_hsm_state_set),
DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_ACTION, mdt_hsm_action),
-DEF_MDT_HDL(0 | HABEO_REFERO, MDS_HSM_REQUEST, mdt_hsm_request),
+DEF_MDT_HDL(HABEO_CORPUS| HABEO_REFERO, MDS_HSM_REQUEST, mdt_hsm_request),
DEF_MDT_HDL(HABEO_CORPUS|HABEO_REFERO, MDS_SWAP_LAYOUTS, mdt_swap_layouts)
};
static const struct req_msg_field *mdt_hsm_progress[] = {
&RMF_PTLRPC_BODY,
+ &RMF_MDT_BODY,
&RMF_MDS_HSM_PROGRESS,
};
static const struct req_msg_field *mdt_hsm_ct_register[] = {
&RMF_PTLRPC_BODY,
+ &RMF_MDT_BODY,
&RMF_MDS_HSM_ARCHIVE,
};
+static const struct req_msg_field *mdt_hsm_ct_unregister[] = {
+ &RMF_PTLRPC_BODY,
+ &RMF_MDT_BODY,
+};
+
static const struct req_msg_field *mdt_hsm_action_server[] = {
&RMF_PTLRPC_BODY,
+ &RMF_MDT_BODY,
&RMF_MDS_HSM_CURRENT_ACTION,
};
static const struct req_msg_field *mdt_hsm_state_get_server[] = {
&RMF_PTLRPC_BODY,
+ &RMF_MDT_BODY,
&RMF_HSM_USER_STATE,
};
EXPORT_SYMBOL(RQF_MDS_HSM_CT_REGISTER);
struct req_format RQF_MDS_HSM_CT_UNREGISTER =
- DEFINE_REQ_FMT0("MDS_HSM_CT_UNREGISTER", empty, empty);
+ DEFINE_REQ_FMT0("MDS_HSM_CT_UNREGISTER", mdt_hsm_ct_unregister, empty);
EXPORT_SYMBOL(RQF_MDS_HSM_CT_UNREGISTER);
struct req_format RQF_MDS_HSM_STATE_GET =