scsi: add additional check for initiator port
Vhost-scsi target will not set task's initiator port parameter, so reservation commands sent from Guest will cause segment fault. Change-Id: Ifc175effded5371eca08d5bfe7e4aa977dd4b1c6 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457550 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
parent
8cdb3d330e
commit
14f6d724ac
@ -99,14 +99,18 @@ spdk_scsi_pr_register_registrant(struct spdk_scsi_lun *lun,
|
||||
|
||||
/* New I_T nexus */
|
||||
reg->initiator_port = initiator_port;
|
||||
snprintf(reg->initiator_port_name, sizeof(reg->initiator_port_name), "%s",
|
||||
initiator_port->name);
|
||||
reg->transport_id_len = initiator_port->transport_id_len;
|
||||
memcpy(reg->transport_id, initiator_port->transport_id, reg->transport_id_len);
|
||||
if (initiator_port) {
|
||||
snprintf(reg->initiator_port_name, sizeof(reg->initiator_port_name), "%s",
|
||||
initiator_port->name);
|
||||
reg->transport_id_len = initiator_port->transport_id_len;
|
||||
memcpy(reg->transport_id, initiator_port->transport_id, reg->transport_id_len);
|
||||
}
|
||||
reg->target_port = target_port;
|
||||
snprintf(reg->target_port_name, sizeof(reg->target_port_name), "%s",
|
||||
target_port->name);
|
||||
reg->relative_target_port_id = target_port->index;
|
||||
if (target_port) {
|
||||
snprintf(reg->target_port_name, sizeof(reg->target_port_name), "%s",
|
||||
target_port->name);
|
||||
reg->relative_target_port_id = target_port->index;
|
||||
}
|
||||
reg->rkey = sa_rkey;
|
||||
TAILQ_INSERT_TAIL(&lun->reg_head, reg, link);
|
||||
lun->pr_generation++;
|
||||
|
Loading…
Reference in New Issue
Block a user