From de03b560a2515f3159663374d2eafcac0f98c960 Mon Sep 17 00:00:00 2001 From: "John L. Hammond" Date: Wed, 11 Sep 2013 16:55:11 -0500 Subject: [PATCH] LU-3931 hsm: reprocess LDLM resource in mdt_hsm_release() In mdt_hsm_release() manually reprocess the LDLM resource (the file being released) after cancelling the lease (exclusive open lock on the same file). Signed-off-by: John L. Hammond Change-Id: Idc2333bc14432f24ef45d5f5d59c8518717c99c2 Reviewed-on: http://review.whamcloud.com/7621 Reviewed-by: Jinshan Xiong Tested-by: Hudson Tested-by: Maloo Reviewed-by: Bobi Jam Reviewed-by: Oleg Drokin --- lustre/ldlm/ldlm_lock.c | 1 + lustre/mdt/mdt_open.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c index 70e09be..6758410 100644 --- a/lustre/ldlm/ldlm_lock.c +++ b/lustre/ldlm/ldlm_lock.c @@ -2097,6 +2097,7 @@ restart: #endif EXIT; } +EXPORT_SYMBOL(ldlm_reprocess_all); /** * Helper function to call blocking AST for LDLM lock \a lock in a diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 801d6a8..947023c 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -1986,8 +1986,7 @@ static int mdt_hsm_release(struct mdt_thread_info *info, struct mdt_object *o, /* try to hold open_sem so that nobody else can open the file */ if (!down_write_trylock(&o->mot_open_sem)) { ldlm_lock_cancel(lease); - LDLM_LOCK_PUT(lease); - RETURN(-EBUSY); + GOTO(out_reprocess, rc = -EBUSY); } /* Check if the lease open lease has already canceled */ @@ -2002,7 +2001,6 @@ static int mdt_hsm_release(struct mdt_thread_info *info, struct mdt_object *o, * have been cancelled. It's okay to cancel it now as we've * held mot_open_sem. */ ldlm_lock_cancel(lease); - LDLM_LOCK_PUT(lease); if (lease_broken) /* don't perform release task */ GOTO(out_unlock, rc = -ESTALE); @@ -2130,6 +2128,10 @@ out_unlock: repbody->valid |= OBD_MD_FLRELEASED; } +out_reprocess: + ldlm_reprocess_all(lease->l_resource); + LDLM_LOCK_PUT(lease); + ma->ma_valid = 0; ma->ma_need = 0; -- 1.8.3.1