ref: 7d7650dffc20c3853eb1acd551c9a02f73751ae3
dir: /sys/src/cmd/scuzz/sense.c/
#include <u.h> #include <libc.h> #include <bio.h> #include <disk.h> #include "scsireq.h" extern Biobuf bout; 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", }; /* * 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"); }