Skip site navigation (1)Skip section navigation (2)
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>