aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/mtip32xx
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2013-02-20 02:26:06 -0500
committerJens Axboe <axboe@kernel.dk>2013-02-20 02:26:06 -0500
commitd4308febf3551d46884561b7c3fdd62ad3ca7ff2 (patch)
treeb8c48122df7c36761c6fb5d70647a09605892b9f /drivers/block/mtip32xx
parentc206c70924737db6836382c09ad2dacd04bb6204 (diff)
parent087ffecdaa1875cc683a7a5bc0695b3ebfce3bad (diff)
Merge branch 'stable/for-jens-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into for-3.9/drivers
Konrad writes: Please git pull the following branch: git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git stable/for-jens-3.9 which has bug-fixes that did not make it in v3.8. They all are marked as material for the stable tree as well. There are two bug-fixes for the code that has been in there for some time (that is the Jan's fix and one of mine). And there are two bug-fixes for the persistent grant feature that debuted in v3.8 for xen blk[back|front]end.
Diffstat (limited to 'drivers/block/mtip32xx')
-rw-r--r--drivers/block/mtip32xx/mtip32xx.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
index 9790666f90f2..11cc9522cdd4 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -629,12 +629,13 @@ static void mtip_timeout_function(unsigned long int data)
629 } 629 }
630 } 630 }
631 631
632 if (cmdto_cnt && !test_bit(MTIP_PF_IC_ACTIVE_BIT, &port->flags)) { 632 if (cmdto_cnt) {
633 print_tags(port->dd, "timed out", tagaccum, cmdto_cnt); 633 print_tags(port->dd, "timed out", tagaccum, cmdto_cnt);
634 634 if (!test_bit(MTIP_PF_IC_ACTIVE_BIT, &port->flags)) {
635 mtip_restart_port(port); 635 mtip_restart_port(port);
636 wake_up_interruptible(&port->svc_wait);
637 }
636 clear_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags); 638 clear_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags);
637 wake_up_interruptible(&port->svc_wait);
638 } 639 }
639 640
640 if (port->ic_pause_timer) { 641 if (port->ic_pause_timer) {
@@ -4017,7 +4018,12 @@ static int mtip_block_remove(struct driver_data *dd)
4017 * Delete our gendisk structure. This also removes the device 4018 * Delete our gendisk structure. This also removes the device
4018 * from /dev 4019 * from /dev
4019 */ 4020 */
4020 del_gendisk(dd->disk); 4021 if (dd->disk) {
4022 if (dd->disk->queue)
4023 del_gendisk(dd->disk);
4024 else
4025 put_disk(dd->disk);
4026 }
4021 4027
4022 spin_lock(&rssd_index_lock); 4028 spin_lock(&rssd_index_lock);
4023 ida_remove(&rssd_index_ida, dd->index); 4029 ida_remove(&rssd_index_ida, dd->index);
@@ -4051,7 +4057,13 @@ static int mtip_block_shutdown(struct driver_data *dd)
4051 "Shutting down %s ...\n", dd->disk->disk_name); 4057 "Shutting down %s ...\n", dd->disk->disk_name);
4052 4058
4053 /* Delete our gendisk structure, and cleanup the blk queue. */ 4059 /* Delete our gendisk structure, and cleanup the blk queue. */
4054 del_gendisk(dd->disk); 4060 if (dd->disk) {
4061 if (dd->disk->queue)
4062 del_gendisk(dd->disk);
4063 else
4064 put_disk(dd->disk);
4065 }
4066
4055 4067
4056 spin_lock(&rssd_index_lock); 4068 spin_lock(&rssd_index_lock);
4057 ida_remove(&rssd_index_ida, dd->index); 4069 ida_remove(&rssd_index_ida, dd->index);