Indeed, seems sbitmap can be reused. But tags is a part of IBTRS, and is not related to block device at all. One IBTRS connection (session) handles many block devices
we use host shared tag sets for the case of multiple block devices.
(or any IO producers).
Lets wait until we actually have this theoretical non-block IO producers..
With a tag you get a free slot of a buffer where you can read/write, so once you've allocated a tag you won't sleep on IO path inside a library.
Same for block tags (given that you don't set the request queue otherwise)
Also tag helps a lot on IO fail-over to another connection (multipath implementation, which is also a part of the transport library, not a block device), where you simply reuse the same buffer slot (with a tag in your hands) forwarding IO to another RDMA connection.
What is the benefit of this detached architecture? IMO, one reason why you ended up not reusing a lot of the infrastructure is yielded from the attempt to support a theoretical different consumer that is not ibnbd. Did you actually had plans for any other consumers? Personally, I think you will be much better off with a unified approach for your block device implementation. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html