Whamcloud - gitweb
Revert "b=19427 correct lmm_object_id and reserve fids for fid-on-OST."
[fs/lustre-release.git] / lustre / mdd / mdd_dir.c
index 6045cf3..d11ffea 100644 (file)
@@ -2313,10 +2313,12 @@ struct lu_buf *mdd_links_get(const struct lu_env *env,
 static int mdd_lee_pack(struct link_ea_entry *lee, const struct lu_name *lname,
                         const struct lu_fid *pfid)
 {
-        int reclen;
+        struct lu_fid   tmpfid;
+        int             reclen;
 
-        fid_cpu_to_be(&lee->lee_parent_fid, pfid);
-        strncpy(lee->lee_name, lname->ln_name, lname->ln_namelen);
+        fid_cpu_to_be(&tmpfid, pfid);
+        memcpy(&lee->lee_parent_fid, &tmpfid, sizeof(tmpfid));
+        memcpy(lee->lee_name, lname->ln_name, lname->ln_namelen);
         reclen = sizeof(struct link_ea_entry) + lname->ln_namelen;
 
         lee->lee_reclen[0] = (reclen >> 8) & 0xff;
@@ -2328,7 +2330,8 @@ void mdd_lee_unpack(const struct link_ea_entry *lee, int *reclen,
                     struct lu_name *lname, struct lu_fid *pfid)
 {
         *reclen = (lee->lee_reclen[0] << 8) | lee->lee_reclen[1];
-        fid_be_to_cpu(pfid, &lee->lee_parent_fid);
+        memcpy(pfid, &lee->lee_parent_fid, sizeof(*pfid));
+        fid_be_to_cpu(pfid, pfid);
         lname->ln_name = lee->lee_name;
         lname->ln_namelen = *reclen - sizeof(struct link_ea_entry);
 }
@@ -2411,9 +2414,14 @@ static int mdd_links_add(const struct lu_env *env,
         rc = __mdd_xattr_set(env, mdd_obj,
                              mdd_buf_get_const(env, buf->lb_buf, leh->leh_len),
                              XATTR_NAME_LINK, 0, handle);
-        if (rc)
-                CERROR("link_ea add failed %d "DFID"\n", rc,
-                       PFID(mdd_object_fid(mdd_obj)));
+        if (rc) {
+                if (rc == -ENOSPC)
+                        CDEBUG(D_INODE, "link_ea add failed %d "DFID"\n", rc,
+                               PFID(mdd_object_fid(mdd_obj)));
+                else
+                        CERROR("link_ea add failed %d "DFID"\n", rc,
+                               PFID(mdd_object_fid(mdd_obj)));
+        }
 
         if (buf->lb_vmalloc)
                 /* if we vmalloced a large buffer drop it */
@@ -2450,8 +2458,12 @@ static int mdd_links_rename(const struct lu_env *env,
         buf = mdd_links_get(env, mdd_obj);
         if (IS_ERR(buf)) {
                 rc = PTR_ERR(buf);
-                CERROR("link_ea read failed %d "DFID"\n",
-                       rc, PFID(mdd_object_fid(mdd_obj)));
+                if (rc == -ENODATA)
+                        CDEBUG(D_INODE, "link_ea read failed %d "DFID"\n",
+                               rc, PFID(mdd_object_fid(mdd_obj)));
+                else
+                        CERROR("link_ea read failed %d "DFID"\n",
+                               rc, PFID(mdd_object_fid(mdd_obj)));
                 RETURN(rc);
         }
         leh = buf->lb_buf;