Thanks for the answer.
Unfortunately, blk-rq-qos cannot be used efficiently for this purpose.
blk-rq-qos is good for collecting request queue processing metrics.
The level at which the interception is performed is too low - it happens
after the device driver has already received the request for processing.
For the filter to work efficiently, we need to ensure that the interception
is performed on a higher level. It is required to put processing of
multiple BIOs on hold while COW algorithm is being executed for them.
We must not be blocking the request processing queue, and also we would
like to avoid impacting the IO scheduler operations.
--
Sergei Shtepa
Veeam Software developer.