|
From: | Vladimir Sementsov-Ogievskiy |
Subject: | Re: [PATCH for-5.0 v2 2/3] block: Increase BB.in_flight for coroutine interfaces |
Date: | Tue, 7 Apr 2020 12:10:30 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
07.04.2020 11:52, Kevin Wolf wrote:
Am 07.04.2020 um 08:41 hat Vladimir Sementsov-Ogievskiy geschrieben:06.04.2020 20:14, Kevin Wolf wrote:External callers of blk_co_*() don't currently increase the BlockBackend.in_flight counter, but calls from blk_aio_*() do, so there is an inconsistency whether the counter has been increased or not. This patch moves the actual operations to static functions that can later know they will always be called with in_flight increased exactly once, even for external callers using the blk_co_*() coroutine interfaces. If the public blk_co_*() interface is unused, remove it. Signed-off-by: Kevin Wolf <address@hidden>Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden> Still, did you consider instead just move inc/dec to _co_ functions, like [...] (and same for write, ioctl, flush, discard). It seems more consistent.. Should it work?No, it would be wrong because it would be too late. The main purpose of blk_inc_in_flight() is to keep the request covered during the first and the last phase outside of blk_co_*(), which can potentially involve BHs like blk_aio_complete_bh(). Kevin
OK, thanks, I see now, we want to caver possible completion BH. Hmm, not too late but too early (for decrement).. As nothing interesting happening between increment in blk_aio_prwv and entering the coroutine with _do_ function. -- Best regards, Vladimir
[Prev in Thread] | Current Thread | [Next in Thread] |