Re: [PATCH 05/24] ibtrs: client: main functionality

Sagi Grimberg
2018-02-05T14:14:43Z

> 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.