Fix for bug reported by Gennadiy Nerubayev <parakie@gmail.com>. In some cases, e.g. with DRBD, bio->bi_end_io() can be called with IRQs disable which isn't appropriate for direct processing in SCST core. Switch to one of internal SCST threads in such cases.

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@678 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2009-02-20 18:04:11 +00:00
parent 0cf7566b93
commit 3f355da360

View File

@@ -2338,7 +2338,7 @@ static inline void blockio_check_finish(struct scst_blockio_work *blockio_work)
if (atomic_dec_and_test(&blockio_work->bios_inflight)) {
blockio_work->cmd->completed = 1;
blockio_work->cmd->scst_cmd_done(blockio_work->cmd,
SCST_CMD_STATE_DEFAULT, SCST_CONTEXT_DIRECT_ATOMIC);
SCST_CMD_STATE_DEFAULT, scst_estimate_context());
kmem_cache_free(blockio_work_cachep, blockio_work);
}
return;