Whamcloud - gitweb
Add ASSERT for filename validity check.
authorfanyong <fanyong>
Fri, 24 Nov 2006 09:49:29 +0000 (09:49 +0000)
committerfanyong <fanyong>
Fri, 24 Nov 2006 09:49:29 +0000 (09:49 +0000)
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_internal.h
lustre/mdt/mdt_open.c
lustre/mdt/mdt_reint.c

index 3c69d5a..87c9456 100644 (file)
@@ -771,8 +771,7 @@ static int mdt_getattr_name_lock(struct mdt_thread_info *info,
         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);
index 733b7df..2c93107 100644 (file)
@@ -712,15 +712,19 @@ static inline ldlm_mode_t mdt_mdl_mode2dlm_mode(mdl_mode_t mode)
 }
 
 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;
 }
 
index 776601e..129e170 100644 (file)
@@ -807,7 +807,7 @@ int mdt_reint_open(struct mdt_thread_info *info, struct mdt_lock_handle *lhc)
 
         fid_zero(child_fid);
 
-        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);
 
         result = mdo_lookup(info->mti_env, mdt_object_child(parent),
                             lname, child_fid, &info->mti_spec);
index 5fbc275..545dbc1 100644 (file)
@@ -83,7 +83,7 @@ static int mdt_md_create(struct mdt_thread_info *info)
                 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);
@@ -435,7 +435,7 @@ static int mdt_reint_unlink(struct mdt_thread_info *info,
         }
 
         /* 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)
@@ -554,7 +554,7 @@ static int mdt_reint_link(struct mdt_thread_info *info,
         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);
 
@@ -597,7 +597,7 @@ static int mdt_reint_rename_tgt(struct mdt_thread_info *info)
 
         /* 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) {
@@ -814,7 +814,7 @@ static int mdt_reint_rename(struct mdt_thread_info *info,
         }
 
         /* 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)
@@ -838,7 +838,7 @@ static int mdt_reint_rename(struct mdt_thread_info *info,
 
         /* 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) {