struct mdt_object *mo, const struct req_format *fmt)
{
struct mdt_body *body;
- struct lu_attr *la = &info->mti_attr.ma_attr;
- int rc = 0;
+ struct lu_attr *la = &info->mti_attr.ma_attr;
+ int rc = 0;
ENTRY;
body = req_capsule_server_get(&info->mti_pill,
/* unpacking */
static int mdt_setattr_unpack(struct mdt_thread_info *info)
{
- struct mdt_rec_setattr *rec;
- struct lu_attr *attr = &info->mti_attr.ma_attr;
+ struct mdt_rec_setattr *rec;
+ struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
- struct req_capsule *pill = &info->mti_pill;
+ struct req_capsule *pill = &info->mti_pill;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_SETATTR);
static int mdt_create_unpack(struct mdt_thread_info *info)
{
- struct mdt_rec_create *rec;
- struct lu_attr *attr = &info->mti_attr.ma_attr;
+ struct mdt_rec_create *rec;
+ struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
- struct req_capsule *pill = &info->mti_pill;
- int result = 0;
+ struct req_capsule *pill = &info->mti_pill;
+ int result = 0;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_CREATE);
attr->la_ctime = rec->cr_time;
attr->la_mtime = rec->cr_time;
rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
-
- if (req_capsule_field_present(pill, &RMF_SYMTGT))
- rr->rr_tgt = req_capsule_client_get(pill, &RMF_SYMTGT);
+ if (rr->rr_name) {
+ if (req_capsule_field_present(pill, &RMF_SYMTGT)) {
+ rr->rr_tgt = req_capsule_client_get(pill,
+ &RMF_SYMTGT);
+ if (rr->rr_tgt == NULL)
+ result = -EFAULT;
+ }
+ } else
+ result = -EFAULT;
} else
result = -EFAULT;
RETURN(result);
static int mdt_link_unpack(struct mdt_thread_info *info)
{
- struct mdt_rec_link *rec;
- struct lu_attr *attr = &info->mti_attr.ma_attr;
+ struct mdt_rec_link *rec;
+ struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
- struct req_capsule *pill = &info->mti_pill;
+ struct req_capsule *pill = &info->mti_pill;
+ int result = 0;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_LINK);
- if (rec == NULL)
- RETURN(-EFAULT);
-
- attr->la_uid = rec->lk_fsuid;
- attr->la_gid = rec->lk_fsgid;
- rr->rr_fid1 = &rec->lk_fid1;
- rr->rr_fid2 = &rec->lk_fid2;
- attr->la_ctime = rec->lk_time;
- attr->la_mtime = rec->lk_time;
+ if (rec != NULL) {
+ attr->la_uid = rec->lk_fsuid;
+ attr->la_gid = rec->lk_fsgid;
+ rr->rr_fid1 = &rec->lk_fid1;
+ rr->rr_fid2 = &rec->lk_fid2;
+ attr->la_ctime = rec->lk_time;
+ attr->la_mtime = rec->lk_time;
- rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
- if (rr->rr_name == NULL)
- RETURN(-EFAULT);
- RETURN(0);
+ rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
+ if (rr->rr_name == NULL)
+ result = -EFAULT;
+ } else
+ result = -EFAULT;
+ RETURN(result);
}
static int mdt_unlink_unpack(struct mdt_thread_info *info)
{
- struct mdt_rec_unlink *rec;
- struct lu_attr *attr = &info->mti_attr.ma_attr;
+ struct mdt_rec_unlink *rec;
+ struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
- struct req_capsule *pill = &info->mti_pill;
+ struct req_capsule *pill = &info->mti_pill;
+ int result = 0;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_UNLINK);
- if (rec == NULL)
- RETURN(-EFAULT);
-
- attr->la_uid = rec->ul_fsuid;
- attr->la_gid = rec->ul_fsgid;
- rr->rr_fid1 = &rec->ul_fid1;
- rr->rr_fid2 = &rec->ul_fid2;
- attr->la_ctime = rec->ul_time;
- attr->la_mtime = rec->ul_time;
- attr->la_mode = rec->ul_mode;
+ if (rec != NULL) {
+ attr->la_uid = rec->ul_fsuid;
+ attr->la_gid = rec->ul_fsgid;
+ rr->rr_fid1 = &rec->ul_fid1;
+ rr->rr_fid2 = &rec->ul_fid2;
+ attr->la_ctime = rec->ul_time;
+ attr->la_mtime = rec->ul_time;
+ attr->la_mode = rec->ul_mode;
- rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
- if (rr->rr_name == NULL)
- RETURN(-EFAULT);
- RETURN(0);
+ rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
+ if (rr->rr_name == NULL)
+ result = -EFAULT;
+ } else
+ result = -EFAULT;
+ RETURN(result);
}
static int mdt_rename_unpack(struct mdt_thread_info *info)
{
- struct mdt_rec_rename *rec;
- struct lu_attr *attr = &info->mti_attr.ma_attr;
+ struct mdt_rec_rename *rec;
+ struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
- struct req_capsule *pill = &info->mti_pill;
+ struct req_capsule *pill = &info->mti_pill;
+ int result = 0;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_RENAME);
- if (rec == NULL)
- RETURN(-EFAULT);
-
- attr->la_uid = rec->rn_fsuid;
- attr->la_gid = rec->rn_fsgid;
- rr->rr_fid1 = &rec->rn_fid1;
- rr->rr_fid2 = &rec->rn_fid2;
- attr->la_ctime = rec->rn_time;
- attr->la_mtime = rec->rn_time;
+ if (rec != NULL) {
+ attr->la_uid = rec->rn_fsuid;
+ attr->la_gid = rec->rn_fsgid;
+ rr->rr_fid1 = &rec->rn_fid1;
+ rr->rr_fid2 = &rec->rn_fid2;
+ attr->la_ctime = rec->rn_time;
+ attr->la_mtime = rec->rn_time;
- rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
- if (rr->rr_name == NULL)
- RETURN(-EFAULT);
- rr->rr_tgt = req_capsule_client_get(pill, &RMF_SYMTGT);
- if (rr->rr_tgt == NULL)
- RETURN(-EFAULT);
- RETURN(0);
+ rr->rr_name = req_capsule_client_get(pill, &RMF_NAME);
+ rr->rr_tgt = req_capsule_client_get(pill, &RMF_SYMTGT);
+ if (rr->rr_name == NULL || rr->rr_tgt == NULL)
+ result = -EFAULT;
+ } else
+ result = -EFAULT;
+ RETURN(result);
}
static int mdt_open_unpack(struct mdt_thread_info *info)
struct lu_attr *attr = &info->mti_attr.ma_attr;
struct req_capsule *pill = &info->mti_pill;
struct mdt_reint_record *rr = &info->mti_rr;
- int result;
+ int result;
ENTRY;
rec = req_capsule_client_get(pill, &RMF_REC_CREATE);
struct mdt_lock_handle *lh;
struct mdt_body *repbody;
/*__u64 valid = attr->la_valid;*/
- int rc;
+ int rc;
ENTRY;
struct ptlrpc_request *req = mdt_info_req(info);
struct mdt_object *mp;
struct mdt_object *mc;
- struct mdt_lock_handle *lhp;
- struct mdt_lock_handle *lhc;
+ struct mdt_lock_handle *lhp;
+ struct mdt_lock_handle *lhc;
struct mdt_body *repbody;
struct lu_fid *child_fid = &info->mti_tmp_fid1;
- int rc;
+ int rc;
ENTRY;
static int mdt_reint_link(struct mdt_thread_info *info)
{
struct mdt_reint_record *rr = &info->mti_rr;
- struct ptlrpc_request *req = mdt_info_req(info);
- struct mdt_object *ms;
- struct mdt_object *mp;
- struct mdt_lock_handle *lhs;
- struct mdt_lock_handle *lhp;
+ struct ptlrpc_request *req = mdt_info_req(info);
+ struct mdt_object *ms;
+ struct mdt_object *mp;
+ struct mdt_lock_handle *lhs;
+ struct mdt_lock_handle *lhp;
int rc;
ENTRY;
struct mdt_lock_handle *lh_tgtdir;
struct mdt_lock_handle *lh_tgt;
struct lu_fid *tgt_fid = &info->mti_tmp_fid1;
- int rc;
+ int rc;
ENTRY;
struct mdt_object *mtgtdir;
struct mdt_object *mold;
struct mdt_object *mnew = NULL;
- struct mdt_lock_handle *lh_srcdirp;
- struct mdt_lock_handle *lh_tgtdirp;
- struct mdt_lock_handle *lh_oldp;
- struct mdt_lock_handle *lh_newp;
- struct lu_fid *old_fid = &info->mti_tmp_fid1;
- struct lu_fid *new_fid = &info->mti_tmp_fid2;
- int rc;
+ struct mdt_lock_handle *lh_srcdirp;
+ struct mdt_lock_handle *lh_tgtdirp;
+ struct mdt_lock_handle *lh_oldp;
+ struct mdt_lock_handle *lh_newp;
+ struct lu_fid *old_fid = &info->mti_tmp_fid1;
+ struct lu_fid *new_fid = &info->mti_tmp_fid2;
+ int rc;
ENTRY;