Whamcloud - gitweb
LU-874 ptlrpc: handle in-flight hqreq correctly
authorJinshan Xiong <jinshan.xiong@whamcloud.com>
Fri, 3 Feb 2012 19:15:02 +0000 (11:15 -0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 15 Mar 2012 20:52:47 +0000 (16:52 -0400)
commit73535a03a3c3012d74bf2893dbcca5ab9bc25359
treea4dfb5d8a5d35e649d98813f98068838e001704b
parent9b1e98dfeda8b2bfbb62313173cbdbcb496c6595
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: I22873187aa6fdb28e95173dc0be9f992a54bbb9e
Reviewed-on: http://review.whamcloud.com/2085
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
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_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