int linkea_init_with_rec(struct linkea_data *ldata) { int rc; rc = linkea_init(ldata); if (!rc && ldata->ld_leh->leh_reccount == 0) rc = -ENODATA; return rc; }
static int lfsck_links_read(const struct lu_env *env, struct dt_object *obj, struct linkea_data *ldata) { int rc; ldata->ld_buf = lu_buf_check_and_alloc(&lfsck_env_info(env)->lti_linkea_buf, PAGE_CACHE_SIZE); if (ldata->ld_buf->lb_buf == NULL) return -ENOMEM; if (!dt_object_exists(obj)) return -ENODATA; rc = dt_xattr_get(env, obj, ldata->ld_buf, XATTR_NAME_LINK, BYPASS_CAPA); if (rc == -ERANGE) { /* Buf was too small, figure out what we need. */ lu_buf_free(ldata->ld_buf); rc = dt_xattr_get(env, obj, ldata->ld_buf, XATTR_NAME_LINK, BYPASS_CAPA); if (rc < 0) return rc; ldata->ld_buf = lu_buf_check_and_alloc(ldata->ld_buf, rc); if (ldata->ld_buf->lb_buf == NULL) return -ENOMEM; rc = dt_xattr_get(env, obj, ldata->ld_buf, XATTR_NAME_LINK, BYPASS_CAPA); } if (rc < 0) return rc; linkea_init(ldata); return 0; }