Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Dec 96 19:12:50 JST
From:      akiyama@kme.mei.co.jp
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/2199: Got a lots of "Target Busy" messages with od.
Message-ID:  <9612121012.AA01873@kmegate.kme.mei.co.jp>
Resent-Message-ID: <199612121020.CAA04012@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         2199
>Category:       kern
>Synopsis:       Got a lots of "Target Busy" messages with od.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec 12 02:20:01 PST 1996
>Last-Modified:
>Originator:     Shunsuke Akiyama
>Organization:
Kyushu Matsushita Electric Co., LTD.
>Release:        FreeBSD 2.2-ALPHA i386
>Environment:

	FreeBSD 2.2-ALPHA kernel configured with "od".
	Adaptec AHA-2940 SCSI Adapter and Matsushita LF-3200 MO drive.

>Description:

	I've got a lots of "Target Busy" messages when mounting MO
	while drive reading media DMA information.  In this case, MO
	drive returns busy status to SCSI adapter.  SCSI subsystem
	retry the I/O operation, and prints "Target Busy" message.
	Then I got many messages on the console.

>How-To-Repeat:

	mount MO media, while drive reading media DMA information.

>Fix:
	
===================================================================
--- sys/scsi/od.c	1996/11/06 19:12:01
+++ sys/scsi/od.c	1996/12/07 12:13:04
@@ -52,6 +52,7 @@
  * WARNING!  Use at your own risk.  Joerg's ancient SONY SMO drive
  * groks it fine, while Shunsuke's Fujitsu chokes on it and times
  * out.
+ *
 #define OD_AUTO_TURNOFF
  */
 
@@ -309,22 +310,24 @@
 		dev, unit, PARTITION(dev)));
 
 	/*
-	 * Try to start the drive, and try to clear "Unit Attention"
-	 * condition, when media had been changed before.
+	 * Try to clear "Unit Attention" condition, when media had
+	 * been changed before.
 	 * This operation also clears the SDEV_MEDIA_LOADED flag in its
 	 * error handling routine.
+	 * And MUST be a first SCSI I/O operation in od_open().
 	 */
-	scsi_start_unit(sc_link, SCSI_SILENT);
-	scsi_prevent(sc_link, PR_PREVENT, SCSI_ERR_OK | SCSI_SILENT);
+	scsi_test_unit_ready(sc_link, SCSI_SILENT);
 
 	/*
-	 * Make sure the drive is ready.
+	 * Try to start the drive (ignore failure).
 	 */
-	scsi_test_unit_ready(sc_link, 0);
+	scsi_start_unit(sc_link, SCSI_ERR_OK | SCSI_SILENT);
+	scsi_prevent(sc_link, PR_PREVENT, SCSI_ERR_OK | SCSI_SILENT);
 
 	SC_DEBUG(sc_link, SDEV_DB3, ("'start' attempted "));
 
 	sc_link->flags |= SDEV_OPEN;	/* unit attn becomes an err now */
+
 	/*
 	 * If it's been invalidated, then forget the label.
 	 */
@@ -458,6 +461,11 @@
 		bp->b_error = EIO;
 		goto bad;
 	}
+
+	/*
+	 * Check it's not too big a transfer for our adapter
+	 */
+	odminphys(bp);
 
 	/*
 	 * Odd number of bytes or negative offset



>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9612121012.AA01873>