this should be applied after russ' change to sdupatepart. fix sdfakescsi to use the correct inquiry data. one liner. Reference: /n/sources/patch/applied/devsd-fakeinquiry Date: Mon May 7 16:31:59 CES 2007 Signed-off-by: quanstro@quanstro.net --- /sys/src/9/port/devsd.c Mon May 7 16:31:18 2007 +++ /sys/src/9/port/devsd.c Mon May 7 16:31:09 2007 @@ -850,10 +850,8 @@ r->dlen = n; if(waserror()){ - if(data != nil){ - sdfree(data); - r->data = nil; - } + sdfree(data); + r->data = nil; nexterror(); } @@ -862,10 +860,8 @@ if(!r->write && r->rlen > 0) memmove(a, data, r->rlen); - if(data != nil){ - sdfree(data); - r->data = nil; - } + sdfree(data); + r->data = nil; poperror(); return r->rlen; @@ -991,7 +987,7 @@ else len = sizeof unit->inquiry; if(r->data && r->dlen >= len){ - memmove(r->data, r->sense, len); + memmove(r->data, unit->inquiry, len); r->rlen = len; } return sdsetsense(r, SDok, 0, 0, 0); @@ -1322,7 +1318,10 @@ error(Ebadusefd); case Rawdata: + if(unit->state != Rawdata) + error(Ebadusefd); unit->state = Rawstatus; + unit->req->write = 1; n = sdrio(unit->req, a, n); }