Unfortunately, rather than simply add a bound WQ type (and leave the "default" IB_POLL_WORKQUEUE unbound), they chose to change the default type to bound. Now, any users of the CQ api who want an unbound WQ need to explicitly request IB_POLL_UNBOUND_WQ provided by this patch.
Like the native workqueue API, if you want it unbound, you need to specify it.
Thus, at least for now, the only users of the new CQ api are the storage ULPs and MADs. Does an iser target also require a bound WQ?
Yes, for the same reasons. As for the patch, why don't you simply keep a cq->wq pointer that would either be ib_comp_wq or ib_comp_unbound_wq? Then you wouldn't need to duplicate the handlers.