summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Miller (OS Dev) <mikem@beardog.cca.cpqcorp.net>2007-03-06 01:42:16 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-06 09:30:25 -0800
commitde69fee82c5962fb7bdaf6eb8a81302f418d1a1d (patch)
treeb68b06b610ab41826d0601ec03e92131df5ab587
parent97c06978515ed6e071bfd4a5e858837dd2b0edcf (diff)
downloadlinux-de69fee82c5962fb7bdaf6eb8a81302f418d1a1d.tar.gz
linux-de69fee82c5962fb7bdaf6eb8a81302f418d1a1d.tar.bz2
linux-de69fee82c5962fb7bdaf6eb8a81302f418d1a1d.zip
[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,
return -1;
}
-static void __devexit cciss_remove_one(struct pci_dev *pdev)
+static void cciss_remove_one(struct pci_dev *pdev)
{
ctlr_info_t *tmp_ptr;
int i, j;
@@ -3428,9 +3428,10 @@ static void __devexit cciss_remove_one(struct pci_dev *pdev)
memset(flush_buf, 0, 4);
return_code = sendcmd(CCISS_CACHE_FLUSH, i, flush_buf, 4, 0, 0, 0, NULL,
TYPE_CMD);
- if (return_code != IO_OK) {
- printk(KERN_WARNING "Error Flushing cache on controller %d\n",
- i);
+ if (return_code == IO_OK) {
+ printk(KERN_INFO "Completed flushing cache on controller %d\n", i);
+ } else {
+ printk(KERN_WARNING "Error flushing cache on controller %d\n", i);
}
free_irq(hba[i]->intr[2], hba[i]);
@@ -3481,6 +3482,7 @@ static struct pci_driver cciss_pci_driver = {
.probe = cciss_init_one,
.remove = __devexit_p(cciss_remove_one),
.id_table = cciss_pci_device_id, /* id_table */
+ .shutdown = cciss_remove_one,
};
/*