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 <john.hammond@intel.com>
Change-Id: Idc2333bc14432f24ef45d5f5d59c8518717c99c2
Reviewed-on: http://review.whamcloud.com/7621
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Bobi Jam <bobijam@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
#endif
EXIT;
}
+EXPORT_SYMBOL(ldlm_reprocess_all);
/**
* Helper function to call blocking AST for LDLM lock \a lock in a
/* 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 */
* 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);
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;