Ignore padding when an iovector is supplied
The iSCSI protocol adds padding to a data packet if the data size is not a multiple of four. The iovector provided by QEMU does not include such padding, and libiscsi then complains that there was a protocol error. This patch fixes this by reading the padding in a separate "recv" system call. These packets anyway do not happen in the data path, where the packet size is a multiple of 512. This fixes QEMU's scsi-generic backend, which triggered the problem when the target sent a 66-byte INQUIRY response. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -269,6 +269,7 @@ struct scsi_task;
|
||||
void iscsi_pdu_set_cdb(struct iscsi_pdu *pdu, struct scsi_task *task);
|
||||
|
||||
int iscsi_get_pdu_data_size(const unsigned char *hdr);
|
||||
int iscsi_get_pdu_padding_size(const unsigned char *hdr);
|
||||
int iscsi_process_pdu(struct iscsi_context *iscsi, struct iscsi_in_pdu *in);
|
||||
|
||||
int iscsi_process_login_reply(struct iscsi_context *iscsi,
|
||||
|
||||
Reference in New Issue
Block a user