struct list_head *layers;
int clean;
int result;
+ ENTRY;
/*
* Create top-level object slice. This will also create
*/
top = s->ls_top_dev->ld_ops->ldo_object_alloc(env,
NULL, s->ls_top_dev);
- if (IS_ERR(top))
- RETURN(top);
+ if (top == NULL)
+ RETURN(ERR_PTR(-ENOMEM));
/*
* This is the only place where object fid is assigned. It's constant
* after this point.
struct lu_fid_pack lck_pack;
};
+/* context key constructor/destructor: lu_global_key_init, lu_global_key_fini */
LU_KEY_INIT_FINI(lu_global, struct lu_cdebug_data);
/*
void *lu_context_key_get(const struct lu_context *ctx,
struct lu_context_key *key)
{
+ LASSERT(ctx->lc_state == LCS_ENTERED);
LASSERT(0 <= key->lct_index && key->lct_index < ARRAY_SIZE(lu_keys));
return ctx->lc_value[key->lct_index];
}
int lu_context_init(struct lu_context *ctx, __u32 tags)
{
memset(ctx, 0, sizeof *ctx);
+ ctx->lc_state = LCS_INITIALIZED;
ctx->lc_tags = tags;
return keys_init(ctx);
}
*/
void lu_context_fini(struct lu_context *ctx)
{
+ LASSERT(ctx->lc_state == LCS_INITIALIZED || ctx->lc_state == LCS_LEFT);
+ ctx->lc_state = LCS_FINALIZED;
keys_fini(ctx);
}
EXPORT_SYMBOL(lu_context_fini);
*/
void lu_context_enter(struct lu_context *ctx)
{
+ LASSERT(ctx->lc_state == LCS_INITIALIZED || ctx->lc_state == LCS_LEFT);
+ ctx->lc_state = LCS_ENTERED;
}
EXPORT_SYMBOL(lu_context_enter);
{
int i;
+ LASSERT(ctx->lc_state == LCS_ENTERED);
+ ctx->lc_state = LCS_LEFT;
if (ctx->lc_value != NULL) {
for (i = 0; i < ARRAY_SIZE(lu_keys); ++i) {
if (ctx->lc_value[i] != NULL) {