int orph_declare_index_delete(const struct lu_env *env, struct mdd_object *obj, struct thandle *th) { struct mdd_device *mdd = mdo2mdd(&obj->mod_obj); struct dt_key *key; int rc; key = orph_key_fill(env, mdo2fid(obj), ORPH_OP_UNLINK); rc = dt_declare_delete(env, mdd->mdd_orphans, key, th); if (rc) return rc; rc = mdo_declare_ref_del(env, obj, th); if (rc) return rc; if (S_ISDIR(mdd_object_type(obj))) { rc = mdo_declare_ref_del(env, obj, th); if (rc) return rc; rc = dt_declare_ref_del(env, mdd->mdd_orphans, th); } return rc; }
int mdd_orphan_declare_delete(const struct lu_env *env, struct mdd_object *obj, struct thandle *th) { struct mdd_device *mdd = mdo2mdd(&obj->mod_obj); struct dt_key *key; int rc; key = mdd_orphan_key_fill(env, mdo2fid(obj)); rc = dt_declare_delete(env, mdd->mdd_orphans, key, th); if (rc) return rc; if (!mdd_object_exists(obj)) return -ENOENT; rc = mdo_declare_ref_del(env, obj, th); if (rc) return rc; if (S_ISDIR(mdd_object_type(obj))) { rc = mdo_declare_ref_del(env, obj, th); if (rc) return rc; rc = dt_declare_ref_del(env, mdd->mdd_orphans, th); } return rc; }