io_queue: IO intents
io_queue: IO intents

The IO intent is an object that keeps cancellable queues of requests.
Queue_s_, because the cancellable queue implementation requires, that
requests queued into it, are also queued in the same (!) main queue.

Since there can be many IO-queues and each can have many fair
sub-queues, there's the need for an intent to collect a bunch of
cancellable queues on board. Typically, there's expected to have only
one entry, but still.

So the io_intent object is the vector of cancellable queues with
an IO of the queue they track. The queue id, in its current form,
is the device:prio_class_id pair.

The io_intent::cancel method destroys the cancellation queues which
causes cancellation of all the requests in them. When destroyed the
handle destroys its cancellable queues, thus cancelling the IO.

Signed-off-by: Pavel Emelyanov <c9a32589e048e044184536f7ac71ef92fe82df3e@scylladb.com>

cloudius-systems/seastar,avikivity/seastar,syuu1228/seastar,cloudius-systems/seastar,syuu1228/seastar,scylladb/seastar,cloudius-systems/seastar,scylladb/seastar,avikivity/seastar,avikivity/seastar,syuu1228/seastar,scylladb/seastar