ASSERTION(ldata->ld_leh != ((void *)0)) can be triggered in
linkea_links_find() due to earlier mdd_links_read() call
missing to return linkea_init() errors and thus preventing
to detect that ld_leh is not populated.
Plus a few error handling fixes to avoid unnecessary msgs
and also prevent early return.
Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: I35b1076d8eb036dd600e0fda711417634590b9df
Reviewed-on: http://review.whamcloud.com/6676
Tested-by: Hudson
Reviewed-by: wangdi <di.wang@intel.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
if (oldpfid != NULL) {
rc = __mdd_links_del(env, mdd_obj, ldata, oldlname, oldpfid);
if (rc) {
- if ((check == 0) ||
+ if ((check == 1) ||
(rc != -ENODATA && rc != -ENOENT))
RETURN(rc);
/* No changes done. */
* old link */
rc2 = __mdd_links_add(env, mdd_obj, ldata, newlname, newpfid,
first, check);
- if (rc2 == -EEXIST)
- rc2 = 0;
}
rc = rc != 0 ? rc : rc2;
rc = rc2;
if (rc) {
int error = 1;
- if (rc == -EOVERFLOW || rc == -ENOENT || rc == -ENOSPC)
+ if (rc == -EOVERFLOW || rc == -ENOSPC)
error = 0;
if (oldpfid == NULL)
CDEBUG(error ? D_ERROR : D_OTHER,
if (rc < 0)
return rc;
- linkea_init(ldata);
- return 0;
+ return linkea_init(ldata);
}
/** Read the link EA into a temp buffer.