aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Miller (OS Dev) <mikem@beardog.cca.cpqcorp.net>2007-03-06 04:42:16 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-06 12:30:25 -0500
commitde69fee82c5962fb7bdaf6eb8a81302f418d1a1d (patch)
treeb68b06b610ab41826d0601ec03e92131df5ab587
parent97c06978515ed6e071bfd4a5e858837dd2b0edcf (diff)
[PATCH] cciss: add struct pci_driver shutdown support (replaces reboot notifier)
This patch adds support for the struct pci_driver shutdown method to cciss. We require notification of an impending reboot or shutdown so that we can flush the battery backed write cache (BBWC) on the Smart Array controller. Signed-off-by: Mike Miller <mike.miller@hp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/block/cciss.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 8791e43cad5d..0c716ee905d7 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3404,7 +3404,7 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
3404 return -1; 3404 return -1;
3405} 3405}
3406 3406
3407static void __devexit cciss_remove_one(struct pci_dev *pdev) 3407static void cciss_remove_one(struct pci_dev *pdev)
3408{ 3408{
3409 ctlr_info_t *tmp_ptr; 3409 ctlr_info_t *tmp_ptr;
3410 int i, j; 3410 int i, j;
@@ -3428,9 +3428,10 @@ static void __devexit cciss_remove_one(struct pci_dev *pdev)
3428 memset(flush_buf, 0, 4); 3428 memset(flush_buf, 0, 4);
3429 return_code = sendcmd(CCISS_CACHE_FLUSH, i, flush_buf, 4, 0, 0, 0, NULL, 3429 return_code = sendcmd(CCISS_CACHE_FLUSH, i, flush_buf, 4, 0, 0, 0, NULL,
3430 TYPE_CMD); 3430 TYPE_CMD);
3431 if (return_code != IO_OK) { 3431 if (return_code == IO_OK) {
3432 printk(KERN_WARNING "Error Flushing cache on controller %d\n", 3432 printk(KERN_INFO "Completed flushing cache on controller %d\n", i);
3433 i); 3433 } else {
3434 printk(KERN_WARNING "Error flushing cache on controller %d\n", i);
3434 } 3435 }
3435 free_irq(hba[i]->intr[2], hba[i]); 3436 free_irq(hba[i]->intr[2], hba[i]);
3436 3437
@@ -3481,6 +3482,7 @@ static struct pci_driver cciss_pci_driver = {
3481 .probe = cciss_init_one, 3482 .probe = cciss_init_one,
3482 .remove = __devexit_p(cciss_remove_one), 3483 .remove = __devexit_p(cciss_remove_one),
3483 .id_table = cciss_pci_device_id, /* id_table */ 3484 .id_table = cciss_pci_device_id, /* id_table */
3485 .shutdown = cciss_remove_one,
3484}; 3486};
3485 3487
3486/* 3488/*