Whamcloud - gitweb
LU-5520 ldlm: resend AST callbacks 35/9335/7
authorVitaly Fertman <vitaly_fertman@xyratex.com>
Sat, 21 Jun 2014 22:02:37 +0000 (02:02 +0400)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 11 Sep 2014 19:58:10 +0000 (19:58 +0000)
commit30be03b4dd593894687773d2a460d441d85f88a2
tree577772c30a6adb77d4c48a2d85b424dd41a710ef
parent175ce732b881e99d77d3f5c11fd1d0d5f604218a
LU-5520 ldlm: resend AST callbacks

While clients will resend client->server RPCs, servers would not
resend server->client RPCs such as LDLM callbacks (blocking
or completion callbacks/ASTs).  This could result in clients being
evicted from the server if blocking callbacks were dropped by the
network (a failed router or lossy network) and the client did not
cancel the requested lock in time.
In order to fix this problem, this patch adds the ability to resend
LDLM callbacks from the server and give the client a chance to
respond within the timeout period before it is evicted:

- resend BL AST within lock callback timeout period;
- still do not resend CANCEL_ON_BLOCK;
- regular resend for CP AST without BL AST embedded;
- prolong lock callback timeout on resend;

some fixes:
- recovery-small test_10 to actually evict the client
  with dropped BL AST;
- ETIMEDOUT to be returned if send limit is expired;

Signed-off-by: Vitaly Fertman <vitaly_fertman@xyratex.com>
Change-Id: Ie65fac94ea68defffd1769cbbb0f74381c11262c
Tested-by: Elena Gryaznova <Elena_Gryaznova@xyratex.com>
Reviewed-by: Alexey Lyashkov <Alexey_Lyashkov@xyratex.com>
Reviewed-by: Andriy Skulysh <Andriy_Skulysh@xyratex.com>
Xyratex-bug-id: MRP-417
Reviewed-on: http://review.whamcloud.com/9335
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Johann Lombardi <johann.lombardi@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/include/lustre_net.h
lustre/ldlm/ldlm_lockd.c
lustre/mdc/mdc_reint.c
lustre/ptlrpc/client.c
lustre/ptlrpc/niobuf.c
lustre/tests/recovery-small.sh
lustre/tests/replay-dual.sh
lustre/tests/test-framework.sh