With multi-rail, a primary NID is used as node identifier, but LNet
decides which NID is actually used for sending/receiving data, on a
per request basis.
For the integrity check mechanism implemented as part of GSS, the
primary NID must be used in order to compute HMAC with the correct
key, independently of the actual NID for the current request.
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I2bf3974d3aa0e8365a9413dca56c69ee3734c12b
Reviewed-on: https://review.whamcloud.com/45277
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jeremy Filizetti <jeremy.filizetti@gmail.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
vcred->vc_uid, vcred->vc_gid,
sec_part_flags, svc_flag, import_to_gss_svc(imp),
imp->imp_connection->c_peer.nid, imp->imp_obd->obd_name,
vcred->vc_uid, vcred->vc_gid,
sec_part_flags, svc_flag, import_to_gss_svc(imp),
imp->imp_connection->c_peer.nid, imp->imp_obd->obd_name,
- imp->imp_connection->c_self, caller_pid);
+ LNetPrimaryNID(imp->imp_connection->c_self), caller_pid);
CDEBUG(D_SEC, "requesting key for %s\n", desc);
CDEBUG(D_SEC, "requesting key for %s\n", desc);
rsikey.lustre_svc = lustre_svc;
/* In case of MR, rq_peer is not the NID from which request is received,
* but primary NID of peer.
rsikey.lustre_svc = lustre_svc;
/* In case of MR, rq_peer is not the NID from which request is received,
* but primary NID of peer.
- * So we need rq_source, which contains the NID actually in use.
+ * So we need LNetPrimaryNID(rq_source) to match what the clients uses.
- rsikey.nid = (__u64) req->rq_source.nid;
+ rsikey.nid = (__u64)LNetPrimaryNID(req->rq_source.nid);
nodemap_test_nid(req->rq_peer.nid, rsikey.nm_name,
sizeof(rsikey.nm_name));
nodemap_test_nid(req->rq_peer.nid, rsikey.nm_name,
sizeof(rsikey.nm_name));