From 2aa5f604fba4f01a2c433f1d4cd77ae688e35e61 Mon Sep 17 00:00:00 2001 From: Bobi Jam Date: Thu, 23 Jul 2015 15:16:08 +0800 Subject: [PATCH] LU-6827 osd: trans credit insufficient for EA object create EA object consumes more credits than regular object: osd_mk_index vs. osd_mkreg, this patch reserves more credits for OSD_OT_CREATE operation. Signed-off-by: Bobi Jam Change-Id: I40ec58ca467474ec4d96e5a1d24164fae03fc227 Reviewed-on: http://review.whamcloud.com/15694 Reviewed-by: Alex Zhuravlev Reviewed-by: Fan Yong Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_handler.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 7ac3591..aa8b281 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -2235,8 +2235,13 @@ static int osd_declare_object_create(const struct lu_env *env, oh = container_of0(handle, struct osd_thandle, ot_super); LASSERT(oh->ot_handle == NULL); + /* EA object consumes more credits than regular object: osd_mk_index + * vs. osd_mkreg: osd_mk_index will create 2 blocks for root_node and + * leaf_node, could involves the block, block bitmap, groups, GDT + * change for each block, so add 4 * 2 credits in that case. */ osd_trans_declare_op(env, oh, OSD_OT_CREATE, - osd_dto_credits_noquota[DTO_OBJECT_CREATE]); + osd_dto_credits_noquota[DTO_OBJECT_CREATE] + + (dof->dof_type == DFT_INDEX) ? 4 * 2 : 0); /* Reuse idle OI block may cause additional one OI block * to be changed. */ osd_trans_declare_op(env, oh, OSD_OT_INSERT, -- 1.8.3.1