aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/mtip32xx/mtip32xx.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 14:51:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 14:51:05 -0400
commitebb37277796269da36a8bc5d72ed1e8e1fb7d34b (patch)
tree0ded627a62a5cec70b18d12825dd858855c135d3 /drivers/block/mtip32xx/mtip32xx.h
parent4de13d7aa8f4d02f4dc99d4609575659f92b3c5a (diff)
parentf50efd2fdbd9b35b11f5778ed85beb764184bda9 (diff)
Merge branch 'for-3.10/drivers' of git://git.kernel.dk/linux-block
Pull block driver updates from Jens Axboe: "It might look big in volume, but when categorized, not a lot of drivers are touched. The pull request contains: - mtip32xx fixes from Micron. - A slew of drbd updates, this time in a nicer series. - bcache, a flash/ssd caching framework from Kent. - Fixes for cciss" * 'for-3.10/drivers' of git://git.kernel.dk/linux-block: (66 commits) bcache: Use bd_link_disk_holder() bcache: Allocator cleanup/fixes cciss: bug fix to prevent cciss from loading in kdump crash kernel cciss: add cciss_allow_hpsa module parameter drivers/block/mg_disk.c: add CONFIG_PM_SLEEP to suspend/resume functions mtip32xx: Workaround for unaligned writes bcache: Make sure blocksize isn't smaller than device blocksize bcache: Fix merge_bvec_fn usage for when it modifies the bvm bcache: Correctly check against BIO_MAX_PAGES bcache: Hack around stuff that clones up to bi_max_vecs bcache: Set ra_pages based on backing device's ra_pages bcache: Take data offset from the bdev superblock. mtip32xx: mtip32xx: Disable TRIM support mtip32xx: fix a smatch warning bcache: Disable broken btree fuzz tester bcache: Fix a format string overflow bcache: Fix a minor memory leak on device teardown bcache: Documentation updates bcache: Use WARN_ONCE() instead of __WARN() bcache: Add missing #include <linux/prefetch.h> ...
Diffstat (limited to 'drivers/block/mtip32xx/mtip32xx.h')
-rw-r--r--drivers/block/mtip32xx/mtip32xx.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/block/mtip32xx/mtip32xx.h b/drivers/block/mtip32xx/mtip32xx.h
index 8e8334c9dd0f..3bb8a295fbe4 100644
--- a/drivers/block/mtip32xx/mtip32xx.h
+++ b/drivers/block/mtip32xx/mtip32xx.h
@@ -52,6 +52,9 @@
52#define MTIP_FTL_REBUILD_MAGIC 0xED51 52#define MTIP_FTL_REBUILD_MAGIC 0xED51
53#define MTIP_FTL_REBUILD_TIMEOUT_MS 2400000 53#define MTIP_FTL_REBUILD_TIMEOUT_MS 2400000
54 54
55/* unaligned IO handling */
56#define MTIP_MAX_UNALIGNED_SLOTS 8
57
55/* Macro to extract the tag bit number from a tag value. */ 58/* Macro to extract the tag bit number from a tag value. */
56#define MTIP_TAG_BIT(tag) (tag & 0x1F) 59#define MTIP_TAG_BIT(tag) (tag & 0x1F)
57 60
@@ -333,6 +336,8 @@ struct mtip_cmd {
333 336
334 int scatter_ents; /* Number of scatter list entries used */ 337 int scatter_ents; /* Number of scatter list entries used */
335 338
339 int unaligned; /* command is unaligned on 4k boundary */
340
336 struct scatterlist sg[MTIP_MAX_SG]; /* Scatter list entries */ 341 struct scatterlist sg[MTIP_MAX_SG]; /* Scatter list entries */
337 342
338 int retries; /* The number of retries left for this command. */ 343 int retries; /* The number of retries left for this command. */
@@ -452,6 +457,10 @@ struct mtip_port {
452 * command slots available. 457 * command slots available.
453 */ 458 */
454 struct semaphore cmd_slot; 459 struct semaphore cmd_slot;
460
461 /* Semaphore to control queue depth of unaligned IOs */
462 struct semaphore cmd_slot_unal;
463
455 /* Spinlock for working around command-issue bug. */ 464 /* Spinlock for working around command-issue bug. */
456 spinlock_t cmd_issue_lock[MTIP_MAX_SLOT_GROUPS]; 465 spinlock_t cmd_issue_lock[MTIP_MAX_SLOT_GROUPS];
457}; 466};
@@ -502,6 +511,8 @@ struct driver_data {
502 511
503 int isr_binding; 512 int isr_binding;
504 513
514 int unal_qdepth; /* qdepth of unaligned IO queue */
515
505 struct list_head online_list; /* linkage for online list */ 516 struct list_head online_list; /* linkage for online list */
506 517
507 struct list_head remove_list; /* linkage for removing list */ 518 struct list_head remove_list; /* linkage for removing list */