The attached patch changes libata device scanning from using the legacy "bang at the door" method of probing devices, to one that calls scsi_scan_target() for each target (ATA device) that the libata transport layer found. Completely untested, feedback welcome. This should improve the speed of SATA probing a tad, and certainly makes it quite a bit less ugly. This might get moved, eventually, into an ATA transport class, depending on how things shape up in the future. Jeff