From 0605b35c022fe1ac4f433ffcdaeb9b539b68c91d Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Mon, 24 Sep 2012 20:03:08 +0000 Subject: [PATCH] scst_vdisk: Fix blockio_exec_rw() error path Send back a BUSY response if not enough memory is available to process a read or write request. Signed-off-by: Bart Van Assche git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4522 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/src/dev_handlers/scst_vdisk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scst/src/dev_handlers/scst_vdisk.c b/scst/src/dev_handlers/scst_vdisk.c index 31c66e303..4da18868c 100644 --- a/scst/src/dev_handlers/scst_vdisk.c +++ b/scst/src/dev_handlers/scst_vdisk.c @@ -3699,6 +3699,16 @@ static void blockio_exec_rw(struct vdisk_cmd_params *p, bool write, bool fua) if (blockio_work == NULL) goto out_no_mem; +#if 0 + { + static int err_inj_cntr; + if (++err_inj_cntr % 256 == 0) { + PRINT_INFO("blockio_exec_rw() error injection"); + goto out_no_bio; + } + } +#endif + blockio_work->cmd = cmd; if (q) @@ -3829,6 +3839,8 @@ out_no_bio: out_no_mem: scst_set_busy(cmd); + cmd->completed = 1; + cmd->scst_cmd_done(cmd, SCST_CMD_STATE_DEFAULT, SCST_CONTEXT_SAME); goto out; }