Whamcloud - gitweb
Update copyrights on source files changed since 2010-02-15.
[fs/lustre-release.git] / lustre / mdd / mdd_dir.c
index fb0c0f3..97fef89 100644 (file)
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
@@ -2278,8 +2278,7 @@ struct lu_buf *mdd_links_get(const struct lu_env *env,
         rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
         if (rc == -ERANGE) {
                 /* Buf was too small, figure out what we need. */
-                buf->lb_buf = NULL;
-                buf->lb_len = 0;
+                mdd_buf_put(buf);
                 rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
                 if (rc < 0)
                         return ERR_PTR(rc);
@@ -2314,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;
@@ -2329,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);
 }
@@ -2412,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 */
@@ -2451,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;