summaryrefslogtreecommitdiffstats
path: root/drivers/block/rsxx/rsxx_priv.h
diff options
context:
space:
mode:
authorPhilip J Kelleher2013-10-19 00:11:46 +0200
committerJens Axboe2013-11-08 17:10:29 +0100
commite35f38bf73b6c9ec9521d9deb94198a419692db5 (patch)
tree4ecd863d83eeb7e9752312f8757f5c6e03f4ea06 /drivers/block/rsxx/rsxx_priv.h
parentdrbd: avoid to shrink max_bio_size due to peer re-configuration (diff)
downloadkernel-qcow2-linux-e35f38bf73b6c9ec9521d9deb94198a419692db5.tar.gz
kernel-qcow2-linux-e35f38bf73b6c9ec9521d9deb94198a419692db5.tar.xz
kernel-qcow2-linux-e35f38bf73b6c9ec9521d9deb94198a419692db5.zip
rsxx: Disallow discards from being unmapped.
This patch fixes a bug in which discards were always calling pci_unmap_page. Discards should never call the pci_unmap_page function call because they are never mapped. This caused a race condition on PowerPC systems when issuing discards, writes, and reads all at the same time. The pci_map_page function would eventually map logical address 0 for a read or write. Discards are always assigned a DMA address of 0 because they are never mapped. So if pci_map_page mapped address 0 for a DMA and a discard was "unmapped" then the address would be freed and would cause an EEH event to occur when Hardware accesses the address. This was injected/uncovered in commit: b347f9cf0bc8d42ee95ba1d3837fd93045ab336b The pci_dma_mapping_error function declares -1 a DMA_ERROR not 0 like initially thought So before we would never unmap discards because they were considered NULL. This patch should fall on top of commit id: fc1967bb08a6184ed44ef990e1dd4389901b809c Also, the driver version is being up dated. Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block/rsxx/rsxx_priv.h')
-rw-r--r--drivers/block/rsxx/rsxx_priv.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/block/rsxx/rsxx_priv.h b/drivers/block/rsxx/rsxx_priv.h
index 913740e53d31..23fa05630fef 100644
--- a/drivers/block/rsxx/rsxx_priv.h
+++ b/drivers/block/rsxx/rsxx_priv.h
@@ -52,7 +52,7 @@ struct proc_cmd;
#define RS70_PCI_REV_SUPPORTED 4
#define DRIVER_NAME "rsxx"
-#define DRIVER_VERSION "4.0.1.2498"
+#define DRIVER_VERSION "4.0.2.2510"
/* Block size is 4096 */
#define RSXX_HW_BLK_SHIFT 12