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
+}