Whamcloud - gitweb
LU-874 ptlrpc: handle in-flight hqreq correctly
authorJinshan Xiong <jinshan.xiong@whamcloud.com>
Wed, 25 Jan 2012 19:27:55 +0000 (11:27 -0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 13 Feb 2012 17:24:35 +0000 (12:24 -0500)
commit15bd23c47332e476b985b220170fd47814ab7f14
treeed5f2d2a36861867081fd9d8f6ad9ff6d819f2bf
parent26de7f886db3724bf6af307c9863e2d723b88b68
LU-874 ptlrpc: handle in-flight hqreq correctly

If there are in-flight requests pending, we shouldn't timeout the
covering dlm locks; neither should we remove the requests from export
exp_hp_rpcs list until the requests are handled.

In this patch, the following things are improved:
1. leave IO rpcs in export's hp list until they are handled;
2. using interval tree to find rpc overlapped locks;
3. refresh the lock again after IO rpcs are finished to leave a time
   window for clients to cancel covering dlm locks;
4. rework repbody in ost_handler.c so as to not modify original obdo
5. cleanup the code.

Signed-off-by: Jinshan Xiong <jinshan.xiong@whamcloud.com>
Change-Id: I33e2d113d7929a56389741c06dffb5efb6bf28a3
Reviewed-on: http://review.whamcloud.com/1918
Tested-by: Hudson
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Johann Lombardi <johann@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: <alexander_boyko@xyratex.com>
12 files changed:
lustre/include/lustre/lustre_idl.h
lustre/include/lustre_dlm.h
lustre/include/lustre_export.h
lustre/include/lustre_net.h
lustre/ldlm/ldlm_extent.c
lustre/ldlm/ldlm_internal.h
lustre/ldlm/ldlm_lock.c
lustre/ldlm/ldlm_lockd.c
lustre/ldlm/ldlm_resource.c
lustre/obdclass/genops.c
lustre/ost/ost_handler.c
lustre/ptlrpc/service.c