scsi: hpsa: destroy sas transport properties before scsi_host
This patch cleans up a lot of warnings when unloading the driver. A current example of the stack trace starts with: [ 142.570715] sysfs group 'power' not found for kobject 'port-5:0' There can be hundreds of these messages during a driver unload. I am resubmitting this patch on behalf of Martin Wilck with his permission. His original patch can be found here: https://www.spinics.net/lists/linux-scsi/msg102085.html This patch did not help until Hannes's commit 9441284fbc39 ("scsi-fixup-kernel-warning-during-rmmod") was applied to the kernel. --------------------------- Original patch description: --------------------------- Unloading the hpsa driver causes warnings [ 1063.793652] WARNING: CPU: 1 PID: 4850 at ../fs/sysfs/group.c:237 device_del+0x54/0x240() [ 1063.793659] sysfs group ffffffff81cf21a0 not found for kobject 'port-2:0' with two different stacks: 1) [ 1063.793774] [<ffffffff81448af4>] device_del+0x54/0x240 [ 1063.793780] [<ffffffff8145178a>] transport_remove_classdev+0x4a/0x60 [ 1063.793784] [<ffffffff81451216>] attribute_container_device_trigger+0xa6/0xb0 [ 1063.793802] [<ffffffffa0105d46>] sas_port_delete+0x126/0x160 [scsi_transport_sas] [ 1063.793819] [<ffffffffa036ebcc>] hpsa_free_sas_port+0x3c/0x70 [hpsa] 2) [ 1063.797103] [<ffffffff81448af4>] device_del+0x54/0x240 [ 1063.797118] [<ffffffffa0105d4e>] sas_port_delete+0x12e/0x160 [scsi_transport_sas] [ 1063.797134] [<ffffffffa036ebcc>] hpsa_free_sas_port+0x3c/0x70 [hpsa] This is caused by the fact that host device hostX is deleted before the SAS transport devices hostX/port-a:b. This patch fixes this by reverting the order of device deletions. Tested-by: Don Brace <don.brace@microsemi.com> Reviewed-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin Wilck <mwilck@suse.de> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
fcc2778540
commit
dfb2e6f46b
|
@ -8684,6 +8684,8 @@ static void hpsa_remove_one(struct pci_dev *pdev)
|
||||||
destroy_workqueue(h->rescan_ctlr_wq);
|
destroy_workqueue(h->rescan_ctlr_wq);
|
||||||
destroy_workqueue(h->resubmit_wq);
|
destroy_workqueue(h->resubmit_wq);
|
||||||
|
|
||||||
|
hpsa_delete_sas_host(h);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Call before disabling interrupts.
|
* Call before disabling interrupts.
|
||||||
* scsi_remove_host can trigger I/O operations especially
|
* scsi_remove_host can trigger I/O operations especially
|
||||||
|
@ -8718,8 +8720,6 @@ static void hpsa_remove_one(struct pci_dev *pdev)
|
||||||
h->lockup_detected = NULL; /* init_one 2 */
|
h->lockup_detected = NULL; /* init_one 2 */
|
||||||
/* (void) pci_disable_pcie_error_reporting(pdev); */ /* init_one 1 */
|
/* (void) pci_disable_pcie_error_reporting(pdev); */ /* init_one 1 */
|
||||||
|
|
||||||
hpsa_delete_sas_host(h);
|
|
||||||
|
|
||||||
kfree(h); /* init_one 1 */
|
kfree(h); /* init_one 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue