linux/drivers/target
Jens Axboe 5d2ee7122c sbitmap: optimize wakeup check
Even if we have no waiters on any of the sbitmap_queue wait states, we
still have to loop every entry to check. We do this for every IO, so
the cost adds up.

Shift a bit of the cost to the slow path, when we actually have waiters.
Wrap prepare_to_wait_exclusive() and finish_wait(), so we can maintain
an internal count of how many are currently active. Then we can simply
check this count in sbq_wake_ptr() and not have to loop if we don't
have any sleepers.

Convert the two users of sbitmap with waiting, blk-mq-tag and iSCSI.

Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-11-30 14:48:04 -07:00
..
iscsi sbitmap: optimize wakeup check 2018-11-30 14:48:04 -07:00
loopback SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
sbp scsi: target: srp, vscsi, sbp, qla: use target_remove_session 2018-08-02 15:29:31 -04:00
tcm_fc scsi: tcm_fc: use target_remove_session 2018-08-02 15:29:31 -04:00
Kconfig target: don't depend on SCSI 2018-08-02 15:19:49 -06:00
Makefile
target_core_alua.c scsi: target: Set response length for REPORT TARGET PORT GROUPS 2018-10-23 21:18:33 -04:00
target_core_alua.h
target_core_configfs.c scsi: target: add helper to check if dev is configured 2018-07-30 23:17:53 -04:00
target_core_device.c scsi: target: add helper to check if dev is configured 2018-07-30 23:17:53 -04:00
target_core_fabric_configfs.c scsi: target: add helper to check if dev is configured 2018-07-30 23:17:53 -04:00
target_core_fabric_lib.c
target_core_file.c iov_iter: Separate type from direction and use accessor functions 2018-10-24 00:41:07 +01:00
target_core_file.h scsi: target: target/file: Add support of direct and async I/O 2018-05-14 22:40:08 -04:00
target_core_hba.c
target_core_iblock.c scsi: target/core: Use the SECTOR_SHIFT constant 2018-10-16 01:13:35 -04:00
target_core_iblock.h scsi: target/core: Use the SECTOR_SHIFT constant 2018-10-16 01:13:35 -04:00
target_core_internal.h scsi: target: Fold core_tmr_handle_tas_abort() into transport_cmd_finish_abort() 2018-07-02 16:44:31 -04:00
target_core_pr.c scsi: target: Fix truncated PR-in ReadKeys response 2018-06-19 21:36:37 -04:00
target_core_pr.h
target_core_pscsi.c block: remove __blk_put_request() 2018-11-07 13:42:32 -07:00
target_core_pscsi.h
target_core_rd.c
target_core_rd.h
target_core_sbc.c scsi: target/core: Always call transport_complete_callback() upon failure 2018-10-16 01:13:35 -04:00
target_core_spc.c block: Finish renaming REQ_DISCARD into REQ_OP_DISCARD 2018-10-03 16:12:28 -06:00
target_core_stat.c
target_core_tmr.c scsi: target: Fold core_tmr_handle_tas_abort() into transport_cmd_finish_abort() 2018-07-02 16:44:31 -04:00
target_core_tpg.c
target_core_transport.c scsi: target/core: Avoid that a kernel oops is triggered when COMPARE AND WRITE fails 2018-11-05 22:16:00 -05:00
target_core_ua.c scsi: target: Remove se_dev_entry.ua_count 2018-07-02 16:44:32 -04:00
target_core_ua.h scsi: target: Fix handling of removed LUNs 2018-07-02 16:44:32 -04:00
target_core_user.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
target_core_xcopy.c scsi: target/core: Remove an unused data member from struct xcopy_pt_cmd 2018-10-16 01:13:35 -04:00
target_core_xcopy.h