m/p/scsi: add SCSI package
This adds a SCSI package to interact with SCSI devices.
It implements a subset of commands from the SPC-5 and SBC-4 standard
useful for discovery and health assessment.
A follow-up will add SAT (SCSI-to-ATA translation) support.
Change-Id: I7f084d26f11d9c951f51051040160e351cf5594c
Reviewed-on: https://review.monogon.dev/c/monogon/+/1066
Reviewed-by: Serge Bazanski <serge@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/scsi/scsi_linux_defs.go b/metropolis/pkg/scsi/scsi_linux_defs.go
new file mode 100644
index 0000000..2d84e91
--- /dev/null
+++ b/metropolis/pkg/scsi/scsi_linux_defs.go
@@ -0,0 +1,40 @@
+//go:build linux
+
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs scsi_linux_defs1.go
+
+package scsi
+
+const (
+ SG_IO = 0x2285
+ SG_DXFER_NONE = -0x1
+ SG_DXFER_TO_DEV = -0x2
+ SG_DXFER_FROM_DEV = -0x3
+ SG_DXFER_TO_FROM_DEV = -0x4
+)
+
+type sgIOHdr struct {
+ Interface_id int32
+ Dxfer_direction int32
+ Cmd_len uint8
+ Mx_sb_len uint8
+ Iovec_count uint16
+ Dxfer_len uint32
+ Dxferp uintptr
+ Cmdp uintptr
+ Sbp uintptr
+ Timeout uint32
+ Flags uint32
+ Pack_id int32
+ Usr_ptr uintptr
+ Status uint8
+ Masked_status uint8
+ Msg_status uint8
+ Sb_len_wr uint8
+ Host_status uint16
+ Driver_status uint16
+ Resid int32
+ Duration uint32
+ Info uint32
+ Pad_cgo_0 [4]byte
+}