summaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd.c
diff options
context:
space:
mode:
authorStefan Haberland <stefan.haberland@de.ibm.com>2010-04-22 17:17:02 +0200
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2010-04-22 17:17:19 +0200
commit6a5176c474e3e722ab273d940442238e554e5e58 (patch)
tree0a623a707647b4511e99822fee37a7e2139689e4 /drivers/s390/block/dasd.c
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ger... (diff)
downloadlinux-6a5176c474e3e722ab273d940442238e554e5e58.tar.xz
linux-6a5176c474e3e722ab273d940442238e554e5e58.zip
[S390] dasd: fix endless loop in erp
If not enough memory is available to build a new erp request it ended up in an endless loop trying to build erp requests. Fixed the loop to proceed the next request instead. Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd.c')
-rw-r--r--drivers/s390/block/dasd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index bbea90baf98f..acf222f91f5a 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1899,7 +1899,8 @@ restart:
/* Process requests that may be recovered */
if (cqr->status == DASD_CQR_NEED_ERP) {
erp_fn = base->discipline->erp_action(cqr);
- erp_fn(cqr);
+ if (IS_ERR(erp_fn(cqr)))
+ continue;
goto restart;
}