#include <u.h>
#include <libc.h>
#include <bio.h>
#include<disk.h>
#include "scsireq.h"
static char* key[16] = {
"no sense",
"recovered error",
"not ready",
"medium error",
"hardware error",
"illegal request",
"unit attention",
"data protect",
"blank check",
"vendor specific",
"copy aborted",
"aborted command",
"equal",
"volume overflow",
"miscompare",
"reserved",
};
extern Biobuf bout;
/*
* use libdisk to read /sys/lib/scsicodes
*/
void
makesense(ScsiReq *rp)
{
char *s;
int i;
Bprint(&bout, "sense data: %s", key[rp->sense[2] & 0x0F]);
if(rp->sense[7] >= 5 && (s = scsierror(rp->sense[0xc], rp->sense[0xd])))
Bprint(&bout, ": %s", s);
Bprint(&bout, "\n\t");
for(i = 0; i < 8+rp->sense[7]; i++)
Bprint(&bout, " %2.2ux", rp->sense[i]);
Bprint(&bout, "\n");
}
|