kernel_optimize_test/include/scsi
Jens Axboe 9937a5e2f3 scsi: remove performance regression due to async queue run
Commit c21e6beb removed our queue request_fn re-enter
protection, and defaulted to always running the queues from
kblockd to be safe. This was a known potential slow down,
but should be safe.

Unfortunately this is causing big performance regressions for
some, so we need to improve this logic. Looking into the details
of the re-enter, the real issue is on requeue of requests.

Requeue of requests upon seeing a BUSY condition from the device
ends up re-running the queue, causing traces like this:

scsi_request_fn()
        scsi_dispatch_cmd()
                scsi_queue_insert()
                        __scsi_queue_insert()
                                scsi_run_queue()
					scsi_request_fn()
						...

potentially causing the issue we want to avoid. So special
case the requeue re-run of the queue, but improve it to offload
the entire run of local queue and starved queue from a single
workqueue callback. This is a lot better than potentially
kicking off a workqueue run for each device seen.

This also fixes the issue of the local device going into recursion,
since the above mentioned commit never moved that queue run out
of line.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2011-05-17 11:04:44 +02:00
..
fc Fix common misspellings 2011-03-31 11:26:23 -03:00
fc_encode.h [SCSI] libfc: introduce __fc_fill_fc_hdr that accepts fc_hdr as an argument 2011-02-28 18:32:33 -06:00
fc_frame.h
iscsi_if.h Fix common misspellings 2011-03-31 11:26:23 -03:00
iscsi_proto.h
Kbuild
libfc.h Fix common misspellings 2011-03-31 11:26:23 -03:00
libfcoe.h [SCSI] libfcoe: Move FCOE_MTU definition from fcoe.h to libfcoe.h 2011-02-28 18:33:12 -06:00
libiscsi_tcp.h Fix common misspellings 2011-03-31 11:26:23 -03:00
libiscsi.h [SCSI] cxgbi: convert to use iscsi_conn_get_addr_param 2011-02-24 12:41:15 -05:00
libsas.h
libsrp.h
osd_attributes.h
osd_initiator.h Fix common misspellings 2011-03-31 11:26:23 -03:00
osd_protocol.h
osd_sec.h
osd_sense.h
osd_types.h
sas_ata.h libsas: convert to libata new error handler 2011-03-02 02:36:45 -05:00
sas.h
scsi_bsg_fc.h
scsi_cmnd.h
scsi_dbg.h
scsi_device.h scsi: remove performance regression due to async queue run 2011-05-17 11:04:44 +02:00
scsi_devinfo.h
scsi_dh.h
scsi_driver.h
scsi_eh.h
scsi_host.h Fix common misspellings 2011-03-31 11:26:23 -03:00
scsi_ioctl.h
scsi_netlink_fc.h
scsi_netlink.h
scsi_scan.h
scsi_tcq.h
scsi_tgt_if.h
scsi_tgt.h
scsi_transport_fc.h Fix common misspellings 2011-03-31 11:26:23 -03:00
scsi_transport_iscsi.h [SCSI] iscsi class: add callout to get iscsi_endpoint values 2011-02-24 12:41:12 -05:00
scsi_transport_sas.h
scsi_transport_spi.h
scsi_transport_srp.h
scsi_transport.h
scsi.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2011-03-17 17:54:40 -07:00
scsicam.h
sg.h
srp.h