Recalculate rq_mbits on ENOMEM resend if OBD_CONNECT_BULK_MBITS
isn't used.
Change-Id: I3bd5f7536372558a264bf5fe3247b8b1946f84fd
Cray-bug-id: LUS-7159
Signed-off-by: Andriy Skulysh <c17819@cray.com>
Reviewed-by: Alexander Boyko <c17825@cray.com>
Reviewed-by: Andrew Perepechko <c17827@cray.com>
Reviewed-on: https://review.whamcloud.com/34753
Tested-by: Jenkins
Reviewed-by: Alexandr Boyko <c17825@cray.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
old_mbits, req->rq_mbits);
} else if (!(lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY)) {
/* Request being sent first time, use xid as matchbits. */
- req->rq_mbits = req->rq_xid;
+ if (OCD_HAS_FLAG(&bd->bd_import->imp_connect_data, BULK_MBITS)
+ || req->rq_mbits == 0) {
+ req->rq_mbits = req->rq_xid;
+ } else {
+ int total_md = (bd->bd_iov_count + LNET_MAX_IOV - 1) /
+ LNET_MAX_IOV;
+ req->rq_mbits -= total_md - 1;
+ }
} else {
/* Replay request, xid and matchbits have already been
* correctly assigned. */