diff options
author | Jens Axboe <axboe@kernel.dk> | 2013-02-20 02:26:06 -0500 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-02-20 02:26:06 -0500 |
commit | d4308febf3551d46884561b7c3fdd62ad3ca7ff2 (patch) | |
tree | b8c48122df7c36761c6fb5d70647a09605892b9f /drivers/block/mtip32xx | |
parent | c206c70924737db6836382c09ad2dacd04bb6204 (diff) | |
parent | 087ffecdaa1875cc683a7a5bc0695b3ebfce3bad (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.c | 24 |
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); |