From a153a0cae400c8643dee0a5f574b9e5cac71ed54 Mon Sep 17 00:00:00 2001 From: wang di Date: Sun, 3 May 2015 11:00:29 -0700 Subject: [PATCH] LU-6566 mdt: optimize sub_stripe lock/unlock In lod_object_unlock, since it already know the lock handle, it can release the lock directly, instead of load and holding the sub-stripe object. Signed-off-by: wang di Change-Id: Id9267f3619b036ce943a1df6ae163ea49a0fbc25 Reviewed-on: http://review.whamcloud.com/14679 Tested-by: Jenkins Reviewed-by: Fan Yong Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Lai Siyao Reviewed-by: Oleg Drokin --- lustre/lod/lod_object.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/lustre/lod/lod_object.c b/lustre/lod/lod_object.c index e7a33af..b1318f6 100644 --- a/lustre/lod/lod_object.c +++ b/lustre/lod/lod_object.c @@ -3790,7 +3790,6 @@ static int lod_object_unlock_internal(const struct lu_env *env, struct ldlm_enqueue_info *einfo, ldlm_policy_data_t *policy) { - struct lod_object *lo = lod_dt_obj(dt); struct lod_slave_locks *slave_locks = einfo->ei_cbdata; int rc = 0; int i; @@ -3800,15 +3799,9 @@ static int lod_object_unlock_internal(const struct lu_env *env, RETURN(0); for (i = 1; i < slave_locks->lsl_lock_count; i++) { - if (lustre_handle_is_used(&slave_locks->lsl_handle[i])) { - int rc1; - - einfo->ei_cbdata = &slave_locks->lsl_handle[i]; - rc1 = dt_object_unlock(env, lo->ldo_stripe[i], einfo, - policy); - if (rc1 < 0) - rc = rc == 0 ? rc1 : rc; - } + if (lustre_handle_is_used(&slave_locks->lsl_handle[i])) + ldlm_lock_decref(&slave_locks->lsl_handle[i], + einfo->ei_mode); } RETURN(rc); @@ -3838,10 +3831,6 @@ static int lod_object_unlock(const struct lu_env *env, struct dt_object *dt, if (!S_ISDIR(dt->do_lu.lo_header->loh_attr)) RETURN(-ENOTDIR); - rc = lod_load_striping(env, lo); - if (rc != 0) - RETURN(rc); - /* Note: for remote lock for single stripe dir, MDT will cancel * the lock by lockh directly */ if (lo->ldo_stripenr <= 1 && dt_object_remote(dt_object_child(dt))) -- 1.8.3.1