[PATCH] libata: add host_set->next for legacy two host_sets case, take #3
authorTejun Heo <htejun@gmail.com>
Mon, 12 Jun 2006 14:05:38 +0000 (23:05 +0900)
committerJeff Garzik <jeff@garzik.org>
Mon, 12 Jun 2006 14:23:21 +0000 (10:23 -0400)
commitf0eb62b81dd16bfc4034916418c3406ba20011e1
treec051e5da940044e189b2227ede4ccb373d0fa169
parentd01712698c7c52bc71f41192e864dccc90a1217d
[PATCH] libata: add host_set->next for legacy two host_sets case, take #3

For a legacy ATA controller, libata registers two separate host sets.
There was no connection between the two hosts making it impossible to
traverse all ports related to the controller.  This patch adds
host_set->next which points to the second host_set and makes
ata_pci_remove_one() remove all associated host_sets.

* On device removal, all ports hanging off the device are properly
  detached.  Prior to this patch, ports on the first host_set weren't
  detached casuing oops on driver unloading.

* On device removal, both host_sets are properly freed

This will also be used by new power management code to suspend and
resume all ports of a controller.  host_set/port representation will
be improved to handle legacy controllers better and this host_set
linking will go away with it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/libata-bmdma.c
drivers/scsi/libata-core.c
include/linux/libata.h