linux/drivers/block
Keith Busch 4d11542070 NVMe: Async IO queue deletion
This attempts to delete all IO queues at the same time asynchronously on
shutdown. This is necessary for a present device that is not responding;
a shutdown operation previously would take 2 minutes per queue-pair
to timeout before moving on to the next queue, making a device removal
appear to take a very long time or "hung" as reported by users.

In the previous worst case, a removal may be stuck forever until a kill
signal is given if there are more than 32 queue pairs since it would run
out of admin command IDs after over an hour of timed out sync commands
(admin queue depth is 64).

This patch will wait for the admin command timeout for all commands to
complete, so the worst case now for an unresponsive controller is 60
seconds, though that still seems like a long time.

Since this adds another way to take queues offline, some duplicate code
resulted so I moved these into more convienient functions.

Signed-off-by: Keith Busch <keith.busch@intel.com>
[make functions static, correct line length and whitespace issues]
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2014-01-27 20:07:35 -05:00
..
aoe aoe: do not BUG if memory pressure prevented debugfs file creation 2013-09-11 15:59:28 -07:00
drbd drbd: avoid to shrink max_bio_size due to peer re-configuration 2013-11-08 09:10:29 -07:00
mtip32xx mtip32xx: dynamically allocate buffer in debugfs functions 2013-11-08 09:10:28 -07:00
paride block_device_operations->release() should return void 2013-05-07 02:16:21 -04:00
rsxx rsxx: Fix possible kernel panic with invalid config. 2013-11-08 09:10:29 -07:00
xen-blkback xen/blkback: fix reference counting 2013-11-08 09:10:27 -07:00
amiflop.c tree-wide: use reinit_completion instead of INIT_COMPLETION 2013-11-15 09:32:21 +09:00
ataflop.c block_device_operations->release() should return void 2013-05-07 02:16:21 -04:00
brd.c block: fix a probe argument to blk_register_region 2013-11-08 08:59:39 -07:00
cciss_cmd.h cciss: use new doorbell-bit-5 reset method 2011-05-06 08:23:55 -06:00
cciss_scsi.c cciss: switch to ->show_info() 2013-04-09 14:13:19 -04:00
cciss_scsi.h cciss: add cciss_tape_cmds module paramter 2011-05-06 08:23:59 -06:00
cciss.c tree-wide: use reinit_completion instead of INIT_COMPLETION 2013-11-15 09:32:21 +09:00
cciss.h cciss: Adds simple mode functionality 2011-08-08 11:40:15 +02:00
cpqarray.c cpqarray: fix info leak in ida_locked_ioctl() 2013-09-24 17:00:26 -07:00
cpqarray.h
cryptoloop.c move linux/loop.h to drivers/block 2013-06-29 12:46:45 +04:00
DAC960.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
DAC960.h
floppy.c block: make rq->cmd_flags be 64-bit 2013-10-25 11:55:59 +01:00
hd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ida_cmd.h
ida_ioctl.h
Kconfig Merge branch 'for-3.13/post-mq-drivers' into for-linus 2013-11-14 08:29:01 -07:00
loop.c loop: fix crash when using unassigned loop device 2013-11-08 09:10:28 -07:00
loop.h move linux/loop.h to drivers/block 2013-06-29 12:46:45 +04:00
Makefile Merge branch 'for-3.13/post-mq-drivers' into for-linus 2013-11-14 08:29:01 -07:00
mg_disk.c mg_disk: remove deprecated IRQF_DISABLED 2013-11-08 09:10:27 -07:00
nbd.c nbd: correct disconnect behavior 2013-07-03 16:08:05 -07:00
null_blk.c null_blk: multi queue aware block test driver 2013-10-25 11:56:00 +01:00
nvme-core.c NVMe: Async IO queue deletion 2014-01-27 20:07:35 -05:00
nvme-scsi.c NVMe: compat SG_IO ioctl 2013-12-16 15:49:40 -05:00
osdblk.c block: replace strict_strtoul() with kstrtoul() 2013-09-11 15:56:56 -07:00
pktcdvd.c pktcdvd: debugfs functions return NULL on error 2013-11-08 09:10:31 -07:00
ps3disk.c Drivers: block: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
ps3vram.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
rbd_types.h rbd: get rid of RBD_MAX_SEG_NAME_LEN 2012-12-17 08:37:29 -06:00
rbd.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2013-09-19 12:50:37 -05:00
skd_main.c skd: reorder construct/destruct code 2013-11-08 09:10:30 -07:00
skd_s1120.h skd: fix formatting in skd_s1120.h 2013-11-08 09:10:30 -07:00
smart1,2.h
sunvdc.c sunvdc: Fix off-by-one in generic_request(). 2013-02-14 11:49:01 -08:00
swim3.c block_device_operations->release() should return void 2013-05-07 02:16:21 -04:00
swim_asm.S
swim.c drivers/block/swim.c: remove unnecessary platform_set_drvdata() 2013-09-11 15:56:59 -07:00
sx8.c block, sx8: fix pointer math issue getting fw version 2012-03-03 19:44:39 +01:00
umem.c Drivers: block: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
umem.h
virtio_blk.c Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2013-11-15 16:33:41 -08:00
xen-blkfront.c xen-blkfront: restore the non-persistent data path 2013-11-08 09:10:30 -07:00
xsysace.c xilinx systemace: Fix sparse warnings 2013-07-10 07:47:12 +02:00
z2ram.c block_device_operations->release() should return void 2013-05-07 02:16:21 -04:00