Whamcloud - gitweb
LU-6827 osd: trans credit insufficient for EA object create 94/15694/5
authorBobi Jam <bobijam.xu@intel.com>
Thu, 23 Jul 2015 07:16:08 +0000 (15:16 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 3 Aug 2015 01:55:28 +0000 (01:55 +0000)
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 <bobijam.xu@intel.com>
Change-Id: I40ec58ca467474ec4d96e5a1d24164fae03fc227
Reviewed-on: http://review.whamcloud.com/15694
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-ldiskfs/osd_handler.c

index 7ac3591..aa8b281 100644 (file)
@@ -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,