namelen = req_capsule_get_size(&info->mti_pill, &RMF_NAME,
RCL_CLIENT);
- /* NOT count the terminating '\0' of filename for length */
- lname = mdt_name(info->mti_env, (char *)name, namelen - 1);
+ lname = mdt_name(info->mti_env, (char *)name, namelen);
CDEBUG(D_INODE, "getattr with lock for "DFID"/%s, ldlm_rep = %p\n",
PFID(mdt_object_fid(parent)), name, ldlm_rep);
}
static inline struct lu_name *mdt_name(const struct lu_env *env,
- char *name, int namelen)
+ char *name, int buflen)
{
struct lu_name *lname;
struct mdt_thread_info *mti;
+ LASSERT(buflen > 0);
+ LASSERT(name[buflen - 1] == '\0');
+
mti = lu_context_key_get(&env->le_ctx, &mdt_thread_key);
lname = &mti->mti_name;
lname->ln_name = name;
- lname->ln_namelen = namelen;
+ /* NOT count the terminating '\0' of name for length */
+ lname->ln_namelen = buflen - 1;
return lname;
}
info->mti_spec.sp_cr_lookup = 1;
lname = mdt_name(info->mti_env, (char *)rr->rr_name,
- rr->rr_namelen - 1);
+ rr->rr_namelen);
rc = mdo_create(info->mti_env, next, lname,
mdt_object_child(child),
&info->mti_spec, ma);
}
/* step 2: find & lock the child */
- lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1);
+ lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen);
rc = mdo_lookup(info->mti_env, mdt_object_child(mp),
lname, child_fid, &info->mti_spec);
if (rc != 0)
mdt_fail_write(info->mti_env, info->mti_mdt->mdt_bottom,
OBD_FAIL_MDS_REINT_LINK_WRITE);
- lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1);
+ lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen);
rc = mdo_link(info->mti_env, mdt_object_child(mp),
mdt_object_child(ms), lname, ma);
/* step 2: find & lock the target object if exists. */
mdt_set_capainfo(info, 0, rr->rr_fid1, BYPASS_CAPA);
- lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen - 1);
+ lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen);
rc = mdo_lookup(info->mti_env, mdt_object_child(mtgtdir),
lname, tgt_fid, &info->mti_spec);
if (rc != 0 && rc != -ENOENT) {
}
/* step 3: find & lock the old object. */
- lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1);
+ lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen);
rc = mdo_lookup(info->mti_env, mdt_object_child(msrcdir),
lname, old_fid, &info->mti_spec);
if (rc != 0)
/* step 4: find & lock the new object. */
/* new target object may not exist now */
- lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen - 1);
+ lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen);
rc = mdo_lookup(info->mti_env, mdt_object_child(mtgtdir),
lname, new_fid, &info->mti_spec);
if (rc == 0) {