run the basic process with iscsi driver
This commit is contained in:
+9
-70
@@ -16,70 +16,9 @@ limitations under the License.
|
||||
|
||||
package scsi
|
||||
|
||||
import "errors"
|
||||
import "github.com/gostor/gotgt/pkg/api"
|
||||
|
||||
var (
|
||||
DefaultBlockShift int = 9
|
||||
DefaultSenseBufferSize int = 252
|
||||
)
|
||||
|
||||
type SCSIDeviceType byte
|
||||
|
||||
var (
|
||||
SAM_STAT_GOOD byte = 0x00
|
||||
SAM_STAT_CHECK_CONDITION byte = 0x02
|
||||
SAM_STAT_CONDITION_MET byte = 0x04
|
||||
SAM_STAT_BUSY byte = 0x08
|
||||
SAM_STAT_INTERMEDIATE byte = 0x10
|
||||
SAM_STAT_INTERMEDIATE_CONDITION_MET byte = 0x14
|
||||
SAM_STAT_RESERVATION_CONFLICT byte = 0x18
|
||||
SAM_STAT_COMMAND_TERMINATED byte = 0x22
|
||||
SAM_STAT_TASK_SET_FULL byte = 0x28
|
||||
SAM_STAT_ACA_ACTIVE byte = 0x30
|
||||
SAM_STAT_TASK_ABORTED byte = 0x40
|
||||
)
|
||||
|
||||
type SAMStat struct {
|
||||
Stat byte
|
||||
Err error
|
||||
}
|
||||
|
||||
var (
|
||||
SAMStatGood = SAMStat{SAM_STAT_GOOD, nil}
|
||||
SAMStatCheckCondition = SAMStat{SAM_STAT_CHECK_CONDITION, errors.New("check condition")}
|
||||
SAMStatConditionMet = SAMStat{SAM_STAT_CONDITION_MET, errors.New("condition met")}
|
||||
SAMStatBusy = SAMStat{SAM_STAT_BUSY, errors.New("busy")}
|
||||
SAMStatIntermediate = SAMStat{SAM_STAT_INTERMEDIATE, errors.New("intermediate")}
|
||||
SAMStatIntermediateConditionMet = SAMStat{SAM_STAT_INTERMEDIATE_CONDITION_MET, errors.New("intermediate condition met")}
|
||||
SAMStatReservationConflict = SAMStat{SAM_STAT_RESERVATION_CONFLICT, errors.New("reservation conflict")}
|
||||
SAMStatCommandTerminated = SAMStat{SAM_STAT_COMMAND_TERMINATED, errors.New("command terminated")}
|
||||
SAMStatTaskSetFull = SAMStat{SAM_STAT_TASK_SET_FULL, errors.New("task set full")}
|
||||
SAMStatAcaActive = SAMStat{SAM_STAT_ACA_ACTIVE, errors.New("aca active")}
|
||||
SAMStatTaskAborted = SAMStat{SAM_STAT_TASK_ABORTED, errors.New("task aborted")}
|
||||
)
|
||||
|
||||
var (
|
||||
TYPE_DISK SCSIDeviceType = 0x00
|
||||
TYPE_TAPE SCSIDeviceType = 0x01
|
||||
TYPE_PRINTER SCSIDeviceType = 0x02
|
||||
TYPE_PROCESSOR SCSIDeviceType = 0x03
|
||||
TYPE_WORM SCSIDeviceType = 0x04
|
||||
TYPE_MMC SCSIDeviceType = 0x05
|
||||
TYPE_SCANNER SCSIDeviceType = 0x06
|
||||
TYPE_MOD SCSIDeviceType = 0x07
|
||||
|
||||
TYPE_MEDIUM_CHANGER SCSIDeviceType = 0x08
|
||||
TYPE_COMM SCSIDeviceType = 0x09
|
||||
TYPE_RAID SCSIDeviceType = 0x0c
|
||||
TYPE_ENCLOSURE SCSIDeviceType = 0x0d
|
||||
TYPE_RBC SCSIDeviceType = 0x0e
|
||||
TYPE_OSD SCSIDeviceType = 0x11
|
||||
TYPE_NO_LUN SCSIDeviceType = 0x7f
|
||||
|
||||
TYPE_PT SCSIDeviceType = 0xff
|
||||
)
|
||||
|
||||
type CommandFunc func(host int, cmd *SCSICommand) SAMStat
|
||||
type CommandFunc func(host int, cmd *api.SCSICommand) api.SAMStat
|
||||
|
||||
type SCSIServiceAction struct {
|
||||
ServiceAction uint32
|
||||
@@ -93,16 +32,16 @@ type SCSIDeviceOperation struct {
|
||||
}
|
||||
|
||||
type BaseSCSIDeviceProtocol struct {
|
||||
Type SCSIDeviceType
|
||||
Type api.SCSIDeviceType
|
||||
SCSIDeviceOps []SCSIDeviceOperation
|
||||
}
|
||||
|
||||
type SCSIDeviceProtocol interface {
|
||||
InitLu(lu *SCSILu) error
|
||||
ExitLu(lu *SCSILu) error
|
||||
ConfigLu(lu *SCSILu) error
|
||||
OnlineLu(lu *SCSILu) error
|
||||
OfflineLu(lu *SCSILu) error
|
||||
InitLu(lu *api.SCSILu) error
|
||||
ExitLu(lu *api.SCSILu) error
|
||||
ConfigLu(lu *api.SCSILu) error
|
||||
OnlineLu(lu *api.SCSILu) error
|
||||
OfflineLu(lu *api.SCSILu) error
|
||||
}
|
||||
|
||||
func NewSCSIDeviceOperation(fn CommandFunc, sa *SCSIServiceAction, pr uint8) SCSIDeviceOperation {
|
||||
@@ -113,7 +52,7 @@ func NewSCSIDeviceOperation(fn CommandFunc, sa *SCSIServiceAction, pr uint8) SCS
|
||||
}
|
||||
}
|
||||
|
||||
func BuildSenseData(cmd *SCSICommand, key byte, asc SCSISubError) {
|
||||
func BuildSenseData(cmd *api.SCSICommand, key byte, asc SCSISubError) {
|
||||
senseBuffer := cmd.SenseBuffer
|
||||
if cmd.Device.Attrs.SenseFormat {
|
||||
// descriptor format
|
||||
|
||||
Reference in New Issue
Block a user