Date: Sun, 10 Aug 1997 13:03:37 +0900 (JST) From: itojun@itojun.org To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: kern/4257: scsi RESERVATION CONFLICT support needed (with proposed change to aic driver) Message-ID: <199708100403.NAA02638@tanmen.digipri.co.jp> Resent-Message-ID: <199708100410.VAA01162@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 4257 >Category: kern >Synopsis: scsi RESERVATION CONFLICT support needed (with proposed change to aic driver) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Aug 9 21:10:01 PDT 1997 >Last-Modified: >Originator: Jun-ichiro Itoh >Organization: itojun.org >Release: FreeBSD 2.2.2-RELEASE i386 >Environment: FreeBSD tanmen.digipri.co.jp 2.2.2-RELEASE FreeBSD 2.2.2-RELEASE #1: Sun Aug 10 12:08:59 JST 1997 itojun@tanmen.digipri.co.jp:/usr/src/sys/compile/TANMEN i386 >Description: Some scsi device supports scsi RESERVE/RESERVE UNIT commands. In this case, scsi status byte may contain 0x18 (RESERVATION CONFLICT) which is currently unsupported by FreeBSD. In result, we'll see this kind of messages to be issued every time we see RESERVATION CONFLICT. Aug 9 19:00:07 tanmen /kernel: uk0(ahc0:1:0): unexpected targ_status: 18 Aug 9 19:00:07 tanmen /kernel: uk0(ahc0:1:0): unexpected targ_status: 18 Aug 9 19:00:07 tanmen /kernel: uk0(ahc0:1:0): host adapter code inconsistency >How-To-Repeat: connect device with RESERVE/RESERVE UNIT support. >Fix: Here's a proposed change to aic driver. Other drivers should be updated accordingly. I'm novice to scsi controls, so could somebody please comment? diff -cr sys.222R/i386/scsi/aic7xxx.c sys/i386/scsi/aic7xxx.c *** sys.222R/i386/scsi/aic7xxx.c Sat Apr 26 14:04:10 1997 --- sys/i386/scsi/aic7xxx.c Sun Aug 10 12:08:15 1997 *************** *** 1359,1364 **** --- 1359,1369 ---- sc_print_addr(xs->sc_link); printf("Target Busy\n"); break; + case SCSI_RSVD: + xs->error = XS_BUSY; /*XXX*/ + sc_print_addr(xs->sc_link); + printf("Target Reserved\n"); + break; default: sc_print_addr(xs->sc_link); printf("unexpected targ_status: %x\n", hscb->status); diff -cr sys.222R/scsi/scsi_all.h sys/scsi/scsi_all.h *** sys.222R/scsi/scsi_all.h Tue May 30 17:13:25 1995 --- sys/scsi/scsi_all.h Sun Aug 10 12:08:40 1997 *************** *** 346,350 **** --- 346,351 ---- #define SCSI_CHECK 0x02 #define SCSI_BUSY 0x08 #define SCSI_INTERM 0x10 + #define SCSI_RSVD 0x18 #define SCSI_QUEUE_FULL 0x28 #endif /*_SCSI_SCSI_ALL_H*/ >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708100403.NAA02638>