linux-stable/drivers/target/iscsi
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
..
cxgbit SCSI misc on 20181024 2018-10-25 07:40:30 -07:00
iscsi_target.c SCSI misc on 20181024 2018-10-25 07:40:30 -07:00
iscsi_target.h target/iscsi: Allocate session IDs from an IDA 2018-08-21 23:54:19 -04:00
iscsi_target_auth.c scsi: target: iscsi: Use bin2hex instead of a re-implementation 2018-09-21 12:32:30 -04:00
iscsi_target_auth.h
iscsi_target_configfs.c Revert "scsi: target/iscsi: Reduce number of __iscsit_free_cmd() callers" 2018-07-30 23:30:51 -04:00
iscsi_target_datain_values.c
iscsi_target_datain_values.h
iscsi_target_device.c
iscsi_target_device.h
iscsi_target_erl0.c scsi: target: split out helper for cxn timeout error stashing 2018-10-16 00:38:37 -04:00
iscsi_target_erl0.h Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:56:58 -08:00
iscsi_target_erl1.c scsi: target: stash sess_err_stats on Data-Out timeout 2018-10-16 00:38:37 -04:00
iscsi_target_erl1.h Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:56:58 -08:00
iscsi_target_erl2.c scsi: iscsi: target: fix spelling mistake "entires" -> "entries" 2018-09-17 02:32:29 -04:00
iscsi_target_erl2.h scsi: iscsi: target: fix spelling mistake "entires" -> "entries" 2018-09-17 02:32:29 -04:00
iscsi_target_login.c SCSI misc on 20181024 2018-10-25 07:40:30 -07:00
iscsi_target_login.h scsi: iscsi: target: Fix conn_ops double free 2018-08-30 07:07:12 -04:00
iscsi_target_nego.c iscsi-target: make sure to wake up sleeping login worker 2018-01-23 23:03:54 -08:00
iscsi_target_nego.h
iscsi_target_nodeattrib.c
iscsi_target_nodeattrib.h
iscsi_target_parameters.c iSCSI-target: Use common error handling code in iscsi_decode_text_input() 2017-11-04 15:17:49 -07:00
iscsi_target_parameters.h
iscsi_target_seq_pdu_list.c
iscsi_target_seq_pdu_list.h
iscsi_target_stat.c scsi: target: use ISCSI_IQN_LEN in iscsi_target_stat 2018-10-16 00:38:36 -04:00
iscsi_target_tmr.c
iscsi_target_tmr.h
iscsi_target_tpg.c scsi: target/iscsi: Make iscsit_ta_authentication() respect the output buffer size 2018-07-02 16:44:31 -04:00
iscsi_target_tpg.h
iscsi_target_transport.c
iscsi_target_util.c sbitmap: optimize wakeup check 2018-11-30 14:48:04 -07:00
iscsi_target_util.h scsi: target: split out helper for cxn timeout error stashing 2018-10-16 00:38:37 -04:00
Kconfig
Makefile