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);