Blame libmultipath/checkers/cciss.h

Packit 39c83f
#ifndef CCISS_H
Packit 39c83f
#define CCISS_H
Packit 39c83f
Packit 39c83f
#include <linux/types.h>
Packit 39c83f
#include <linux/ioctl.h>
Packit 39c83f
Packit 39c83f
#define CCISS_IOC_MAGIC 'B'
Packit 39c83f
Packit 39c83f
/*
Packit 39c83f
 * transfer direction
Packit 39c83f
 */
Packit 39c83f
#define XFER_NONE		0x00
Packit 39c83f
#define XFER_WRITE		0x01
Packit 39c83f
#define XFER_READ		0x02
Packit 39c83f
#define XFER_RSVD		0x03
Packit 39c83f
Packit 39c83f
/*
Packit 39c83f
 * task attribute
Packit 39c83f
 */
Packit 39c83f
#define ATTR_UNTAGGED		0x00
Packit 39c83f
#define ATTR_SIMPLE		0x04
Packit 39c83f
#define ATTR_HEADOFQUEUE	0x05
Packit 39c83f
#define ATTR_ORDERED		0x06
Packit 39c83f
#define ATTR_ACA		0x07
Packit 39c83f
Packit 39c83f
/*
Packit 39c83f
 * cdb type
Packit 39c83f
 */
Packit 39c83f
#define TYPE_CMD		0x00
Packit 39c83f
#define TYPE_MSG		0x01
Packit 39c83f
Packit 39c83f
#define SENSEINFOBYTES		32
Packit 39c83f
Packit 39c83f
/*
Packit 39c83f
 * Type defs used in the following structs
Packit 39c83f
 */
Packit 39c83f
#define BYTE __u8
Packit 39c83f
#define WORD __u16
Packit 39c83f
#define HWORD __u16
Packit 39c83f
#define DWORD __u32
Packit 39c83f
Packit 39c83f
#pragma pack(1)
Packit 39c83f
Packit 39c83f
//Command List Structure
Packit 39c83f
typedef union _SCSI3Addr_struct {
Packit 39c83f
	struct {
Packit 39c83f
		BYTE Dev;
Packit 39c83f
		BYTE Bus:6;
Packit 39c83f
		BYTE Mode:2;        // b00
Packit 39c83f
	} PeripDev;
Packit 39c83f
	struct {
Packit 39c83f
		BYTE DevLSB;
Packit 39c83f
		BYTE DevMSB:6;
Packit 39c83f
		BYTE Mode:2;        // b01
Packit 39c83f
	} LogDev;
Packit 39c83f
	struct {
Packit 39c83f
		BYTE Dev:5;
Packit 39c83f
		BYTE Bus:3;
Packit 39c83f
		BYTE Targ:6;
Packit 39c83f
		BYTE Mode:2;        // b10
Packit 39c83f
	} LogUnit;
Packit 39c83f
} SCSI3Addr_struct;
Packit 39c83f
Packit 39c83f
typedef struct _PhysDevAddr_struct {
Packit 39c83f
	DWORD             TargetId:24;
Packit 39c83f
	DWORD             Bus:6;
Packit 39c83f
	DWORD             Mode:2;
Packit 39c83f
	SCSI3Addr_struct  Target[2]; //2 level target device addr
Packit 39c83f
} PhysDevAddr_struct;
Packit 39c83f
Packit 39c83f
typedef struct _LogDevAddr_struct {
Packit 39c83f
	DWORD            VolId:30;
Packit 39c83f
	DWORD            Mode:2;
Packit 39c83f
	BYTE             reserved[4];
Packit 39c83f
} LogDevAddr_struct;
Packit 39c83f
Packit 39c83f
typedef union _LUNAddr_struct {
Packit 39c83f
	BYTE               LunAddrBytes[8];
Packit 39c83f
	SCSI3Addr_struct   SCSI3Lun[4];
Packit 39c83f
	PhysDevAddr_struct PhysDev;
Packit 39c83f
	LogDevAddr_struct  LogDev;
Packit 39c83f
} LUNAddr_struct;
Packit 39c83f
Packit 39c83f
typedef struct _RequestBlock_struct {
Packit 39c83f
	BYTE   CDBLen;
Packit 39c83f
	struct {
Packit 39c83f
		BYTE Type:3;
Packit 39c83f
		BYTE Attribute:3;
Packit 39c83f
		BYTE Direction:2;
Packit 39c83f
	} Type;
Packit 39c83f
	HWORD  Timeout;
Packit 39c83f
	BYTE   CDB[16];
Packit 39c83f
} RequestBlock_struct;
Packit 39c83f
Packit 39c83f
typedef union _MoreErrInfo_struct{
Packit 39c83f
	struct {
Packit 39c83f
		BYTE  Reserved[3];
Packit 39c83f
		BYTE  Type;
Packit 39c83f
		DWORD ErrorInfo;
Packit 39c83f
	} Common_Info;
Packit 39c83f
	struct{
Packit 39c83f
		BYTE  Reserved[2];
Packit 39c83f
		BYTE  offense_size;//size of offending entry
Packit 39c83f
		BYTE  offense_num; //byte # of offense 0-base
Packit 39c83f
		DWORD offense_value;
Packit 39c83f
	} Invalid_Cmd;
Packit 39c83f
} MoreErrInfo_struct;
Packit 39c83f
Packit 39c83f
typedef struct _ErrorInfo_struct {
Packit 39c83f
	BYTE               ScsiStatus;
Packit 39c83f
	BYTE               SenseLen;
Packit 39c83f
	HWORD              CommandStatus;
Packit 39c83f
	DWORD              ResidualCnt;
Packit 39c83f
	MoreErrInfo_struct MoreErrInfo;
Packit 39c83f
	BYTE               SenseInfo[SENSEINFOBYTES];
Packit 39c83f
} ErrorInfo_struct;
Packit 39c83f
Packit 39c83f
#pragma pack()
Packit 39c83f
Packit 39c83f
typedef struct _IOCTL_Command_struct {
Packit 39c83f
	LUNAddr_struct		LUN_info;
Packit 39c83f
	RequestBlock_struct	Request;
Packit 39c83f
	ErrorInfo_struct	error_info;
Packit 39c83f
	WORD			buf_size;  /* size in bytes of the buf */
Packit 39c83f
	BYTE			*buf;
Packit 39c83f
} IOCTL_Command_struct;
Packit 39c83f
Packit 39c83f
typedef struct _LogvolInfo_struct{
Packit 39c83f
	__u32   LunID;
Packit 39c83f
	int     num_opens;  /* number of opens on the logical volume */
Packit 39c83f
	int     num_parts;  /* number of partitions configured on logvol */
Packit 39c83f
} LogvolInfo_struct;
Packit 39c83f
Packit 39c83f
#define CCISS_PASSTHRU     _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
Packit 39c83f
#define CCISS_GETLUNINFO   _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
Packit 39c83f
Packit 39c83f
int cciss_init( struct checker *);
Packit 39c83f
void cciss_free (struct checker * c);
Packit 39c83f
int cciss_tur( struct checker *);
Packit 39c83f
Packit 39c83f
#endif