Re: Western Digital 1TB My Book Studio

Sean Bruno <[email protected]>
Newsgroups gmane.os.freebsd.devel.firewire
Message-ID <[email protected]>
Stephen Bader wrote:
> Still no dice with the new patch. Here is the debug output.
>
> fwohci0: Initiate bus reset
> fwohci0: fwphy_rddata: 0x1 loop=1, retry=0
> fwohci0: fwphy_rddata: 0x1 loop=0, retry=0
> fwohci0: BUS reset
> sbp_post_busreset
> fwohci0: node_id=0xc800ffc1, gen=9, CYCLEMASTER mode
> firewire0: 2 nodes, maxhop <= 1, cable IRM = 1 (me)
> fwohci0: fw_set_bus_manager: 1->1 (loop=0)
> firewire0: bus manager 1 (me)
> send phy_config root_node=1 gap_count=5
> fwohci0: start AT DMA status=12
> node0: crom unchanged
> fw_explore: node 2, err = 0
> bus_explore done
> sbp_post_explore (sbp_cold=0)
> sbp_post_explore: EUI:0090a9341b93f349 attached
> target 0 lun 0 found
> target 0 lun 1 found
> sbp_probe_target: detected non sequential access device(64).  skipping
> sbp_probe_target: detected non sequential access device(77).  skipping
>
> -Steve
Hmmm...apparently, I have to mask out "something" else in that 
variable.  Not sure why, but try this patch.


-- 
Sean Bruno
MiraLink Corporation
6015 NE 80th Ave, Ste 100
Portland, OR 97218
Cell 503-358-6832
Phone 503-621-5143
Fax 503-621-5199
MSN: [email protected]
Google:  [email protected]

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-firewire
To unsubscribe, send any mail to "[email protected]"
sbp3.diff (text/x-patch, 1.2 KB)
Index: sbp.c
===================================================================
--- sbp.c	(revision 5540)
+++ sbp.c	(working copy)
@@ -195,7 +195,7 @@
 #define SBP_DEV_RETRY		7	/* unavailable unit */
 	uint8_t status:4,
 		 timeout:4;
-	uint8_t type;
+	uint8_t type;			/* SPC-2 device types */
 	uint16_t lun_id;
 	uint16_t freeze;
 #define	ORB_LINK_DEAD		(1 << 0)
@@ -738,6 +738,18 @@
 		sdev = target->luns[i];
 		if (sdev == NULL)
 			continue;
+		/*
+	 	 * if a Firewire device reports some kind
+	 	 * of other device, that is not a drive
+	 	 * then skip it
+	 	 */
+		if ((sdev->type & 0x1f) != T_DIRECT) {
+SBP_DEBUG(0)
+			printf("%s: detected non direct access device(%u).  skipping\n",
+				__func__, sdev->type & 0x1f);
+END_DEBUG
+			continue;
+		}
 		if (alive && (sdev->status != SBP_DEV_DEAD)) {
 			if (sdev->path != NULL) {
 				SBP_LOCK(sbp);
@@ -855,7 +867,7 @@
 	/* traverse device list */
 	STAILQ_FOREACH(fwdev, &sbp->fd.fc->devices, link) {
 SBP_DEBUG(0)
-		printf("sbp_post_explore: EUI:%08x%08x ",
+		printf("%s: EUI:%08x%08x ", __func__,
 				fwdev->eui.hi, fwdev->eui.lo);
 		if (fwdev->status != FWDEVATTACHED)
 			printf("not attached, state=%d.\n", fwdev->status);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.