staging/lustre/ptlrpc: lost bulk leads to a hang
The reverse order of request_out_callback() and reply_in_callback() puts the RPC into UNREGISTERING state, which is waiting for RPC & bulk md unlink, whereas only RPC md unlink has been called so far. If bulk is lost, even expired_set does not check for UNREGISTERING state. The same for write if server returns an error. This phase is ambiguous, split to UNREG_RPC and UNREG_BULK. Signed-off-by: NVitaly Fertman <vitaly.fertman@seagate.com> Seagate-bug-id: MRP-2953, MRP-3206 Reviewed-by: NAndriy Skulysh <andriy.skulysh@seagate.com> Reviewed-by: NAlexey Leonidovich Lyashkov <alexey.lyashkov@seagate.com> Tested-by: NElena V. Gryaznova <elena.gryaznova@seagate.com> Reviewed-on: http://review.whamcloud.com/19953Reviewed-by: NChris Horn <hornc@cray.com> Reviewed-by: NAnn Koehler <amk@cray.com> Reviewed-by: NAndreas Dilger <andreas.dilger@intel.com> Signed-off-by: NOleg Drokin <green@linuxhacker.ru> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing
想要评论请 注册 或 登录