Question

I am writing a SCSI pass-though device driver sub-classed from IOSCSIPeripheralDeviceType00 for a USB-attached mass storage device. The device intercepts some vendor-specific SCSI commands in the firmware and replies appropriately, as well as responding to "normal" SCSI commands.

I have implemented a drive much in the style of this Wagerlabs code.

The init() and probe() methods are basically empty, just doing some logging and calling the repetitive super-class functions. These appear to be working correctly (the logs appear as expected and the driver is assigned to the device when it is plugged in). However, when the driver's start() method is called, the super-class' start() is called first but does not return until the device is unplugged.

Was it helpful?

Solution

In the end, it turned out that the device was not properly initialising the attached disks and therefore was not allowing the start() method, which was passed up the classes to IOSCSIProtocolInterface::start() to properly communicate with the device, hanging the startup until the device was physically unplugged.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top