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;
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);
}
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 */
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;