From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> This is a pretty rough-and-ready conversion of the target drivers from using percpu_ida to sbitmap. It compiles; I don't have a target setup, so it's completely untested. I haven't tried to do anything particularly clever here, so it's possible that, for example, the wait queue in iscsi_target_util could be more clever, like the block layer uses multiple wait queues to avoid pingpongs. Or maybe we could figure out a way to not store the CPU that the ID was allocated on, or perhaps the options I specified to sbitmap_queue_init() are suboptimal. Patch 2 isn't interesting; it just deletes the implementation. Patch 1 will be where all the action is. Matthew Wilcox (2): Convert target drivers to use sbitmap Remove percpu_ida drivers/scsi/qla2xxx/qla_target.c | 16 +- drivers/target/iscsi/iscsi_target_util.c | 34 +- drivers/target/sbp/sbp_target.c | 8 +- drivers/target/target_core_transport.c | 5 +- drivers/target/tcm_fc/tfc_cmd.c | 11 +- drivers/usb/gadget/function/f_tcm.c | 8 +- drivers/vhost/scsi.c | 9 +- drivers/xen/xen-scsiback.c | 8 +- include/linux/percpu_ida.h | 83 ----- include/target/iscsi/iscsi_target_core.h | 1 + include/target/target_core_base.h | 5 +- lib/Makefile | 2 +- lib/percpu_ida.c | 391 ----------------------- 13 files changed, 74 insertions(+), 507 deletions(-) delete mode 100644 include/linux/percpu_ida.h delete mode 100644 lib/percpu_ida.c -- 2.17.0