On 04/12/18 00:27, Christoph Hellwig wrote:
On Tue, Apr 10, 2018 at 05:02:40PM -0600, Bart Van Assche wrote:
Because blkcg_exit_queue() is now called from inside blk_cleanup_queue()
it is no longer safe to access cgroup information during or after the
blk_cleanup_queue() call. Hence protect the generic_make_request_checks()
call with blk_queue_enter() / blk_queue_exit().
I think the problem is that blkcg does weird things from
blk_cleanup_queue. I'd rather fix that root cause than working around it.
Can you clarify your comment? generic_make_request_checks() calls
blkcg_bio_issue_check() and that function in turn calls blkg_lookup()
and other blkcg functions. Hence this patch that avoids that blkcg code
is called concurrently with removal of a request queue from blkcg.