It's not necessary reassgin & re-adjust rq_mbits for replay
request in ptlrpc_set_bulk_mbits(), they all must have already
been correctly assigned before.
Such unecessary reassign could make the first matchbit not
PTLRPC_BULK_OPS_MASK aligned, that'll trigger LASSERT in
ptlrpc_register_bulk():
- ptlrpc_set_bulk_mbits() is called when first time sending
request, rq_mbits is set as xid, which is BULK_OPS aligned;
- ptlrpc_set_bulk_mbits() continue to adjust the mbits for
multi-bulk RPC, rq_mbits is not aligned anymore, then rq_xid
is changed accordingly if client is connecting to an old
server, so rq_xid became unaligned too;
- The request is replayed, ptlrpc_set_bulk_mbits() reassign
the rq_mbits as rq_xid, which isn't aligned already, but
ptlrpc_register_bulk() still assumes this value as the
first matchbits and LASSERT it's BULK_OPS aligned.
Signed-off-by: Niu Yawei <yawei.niu@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6808
Reviewed-on: http://review.whamcloud.com/23048
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>