diff --git a/pkg/port/iscsit/iscsid.go b/pkg/port/iscsit/iscsid.go index 7281b09..84d35c9 100644 --- a/pkg/port/iscsit/iscsid.go +++ b/pkg/port/iscsit/iscsid.go @@ -546,6 +546,12 @@ func (s *ISCSITargetDriver) iscsiExecLogin(conn *iscsiConnection) error { if conn.loginParam.tgtNSG == FullFeaturePhase && conn.loginParam.tgtTrans { conn.state = CONN_STATE_LOGIN_FULL + // Update maxRecvDataSegmentLength from the negotiated MaxXmitDataSegmentLength + // (which comes from the initiator's MaxRecvDataSegmentLength) + if negotiatedMaxXmit := conn.loginParam.sessionParam[ISCSI_PARAM_MAX_XMIT_DLENGTH].Value; negotiatedMaxXmit > 0 { + conn.maxRecvDataSegmentLength = uint32(negotiatedMaxXmit) + conn.maxSeqCount = conn.maxBurstLength / conn.maxRecvDataSegmentLength + } } else { conn.state = CONN_STATE_LOGIN } diff --git a/pkg/port/iscsit/session.go b/pkg/port/iscsit/session.go index 875aa8f..386593d 100644 --- a/pkg/port/iscsit/session.go +++ b/pkg/port/iscsit/session.go @@ -380,7 +380,7 @@ func (s *ISCSITargetDriver) BindISCSISession(conn *iscsiConnection) error { return fmt.Errorf("initiator err, invalid request") } - if existSess == nil && conn.loginParam.tsih != 0 && + if existSess != nil && conn.loginParam.tsih != 0 && existSess.TSIH != conn.loginParam.tsih { return fmt.Errorf("initiator err, no session") } diff --git a/pkg/scsi/sbc.go b/pkg/scsi/sbc.go index 290e5dc..a0e8be5 100644 --- a/pkg/scsi/sbc.go +++ b/pkg/scsi/sbc.go @@ -789,7 +789,7 @@ func SBCGetLbaStatus(host int, cmd *api.SCSICommand) api.SAMStat { tl = getSCSIReadWriteCount(scb) // Verify that we are not doing i/o beyond the end-of-lun totalBlocks = dev.Size >> dev.BlockShift - log.Warnf("DEBUG: dev.Size=%d, BlockShift=%d, totalBlocks=%d", dev.Size, dev.BlockShift, totalBlocks) + log.Debugf("dev.Size=%d, BlockShift=%d, totalBlocks=%d", dev.Size, dev.BlockShift, totalBlocks) if lba >= totalBlocks || lba+uint64(tl) < lba || lba+uint64(tl) > totalBlocks { key = ILLEGAL_REQUEST asc = ASC_LBA_OUT_OF_RANGE diff --git a/pkg/scsi/spc.go b/pkg/scsi/spc.go index 2797c68..b90f815 100644 --- a/pkg/scsi/spc.go +++ b/pkg/scsi/spc.go @@ -38,7 +38,7 @@ func SPCIllegalOp(host int, cmd *api.SCSICommand) api.SAMStat { } func SPCLuOffline(lu *api.SCSILu) error { - lu.Attrs.Online = true + lu.Attrs.Online = false return nil } @@ -47,7 +47,7 @@ func SPCLuOnline(lu *api.SCSILu) error { return fmt.Errorf("lu prevent removal") } - lu.Attrs.Online = false + lu.Attrs.Online = true return nil }