This patch is an add-on to the generic fix for resends
handling known as :
Lustre-commit: I9a23c13313d5168d0c232fdc0acbdab330089356
Lustre-change: http://review.whamcloud.com/5978/
This patch adds handling of resend during layout-lock
Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: Ideb551779a884d77ded8036c513f62557b2dfcde
Reviewed-on: http://review.whamcloud.com/10378
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Vitaly Fertman <vitaly_fertman@xyratex.com>
Reviewed-by: James Simmons <uja.ornl@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
struct ldlm_lock **lockp,
__u64 flags)
{
struct ldlm_lock **lockp,
__u64 flags)
{
+ struct mdt_lock_handle *lhc = &info->mti_lh[MDT_LH_LAYOUT];
struct layout_intent *layout;
struct lu_fid *fid;
struct mdt_object *obj = NULL;
struct layout_intent *layout;
struct lu_fid *fid;
struct mdt_object *obj = NULL;
fid = &info->mti_tmp_fid2;
fid_extract_from_res_name(fid, &(*lockp)->l_resource->lr_name);
fid = &info->mti_tmp_fid2;
fid_extract_from_res_name(fid, &(*lockp)->l_resource->lr_name);
+ /* Get lock from request for possible resent case. */
+ mdt_intent_fixup_resent(info, *lockp, lhc, flags);
+
obj = mdt_object_find(info->mti_env, info->mti_mdt, fid);
if (IS_ERR(obj))
RETURN(PTR_ERR(obj));
obj = mdt_object_find(info->mti_env, info->mti_mdt, fid);
if (IS_ERR(obj))
RETURN(PTR_ERR(obj));
if (rc != 0)
RETURN(-EINVAL);
if (rc != 0)
RETURN(-EINVAL);
+ if (lustre_handle_is_used(&lhc->mlh_reg_lh))
+ rc = mdt_intent_lock_replace(info, lockp, lhc, flags);
+
layout = req_capsule_client_get(info->mti_pill, &RMF_LAYOUT_INTENT);
LASSERT(layout != NULL);
if (layout->li_opc == LAYOUT_INTENT_ACCESS)
layout = req_capsule_client_get(info->mti_pill, &RMF_LAYOUT_INTENT);
LASSERT(layout != NULL);
if (layout->li_opc == LAYOUT_INTENT_ACCESS)
- /* return to normal ldlm handling */
- RETURN(0);
+ /* return to normal/resent ldlm handling */
+ RETURN(rc);
CERROR("%s: Unsupported layout intent (%d)\n",
mdt_obd_name(info->mti_mdt), layout->li_opc);
CERROR("%s: Unsupported layout intent (%d)\n",
mdt_obd_name(info->mti_mdt), layout->li_opc);