From fcddab5c4a43d412dd069da32d7bcebf3f11543f Mon Sep 17 00:00:00 2001 From: Stefan Weinhuber Date: Tue, 19 Feb 2008 15:29:27 +0100 Subject: [PATCH] --- yaml --- r: 85899 b: refs/heads/master c: 03513bccad33667ed738cfd96dc5757e539e0bdb h: refs/heads/master i: 85897: 195c4ebc089b511899d7a4478fb4b09d64bfd323 85895: 7a0efd611be808dfb8c40fd2ec0e7ce53b682658 v: v3 --- [refs] | 2 +- trunk/drivers/s390/block/dasd.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index be80d0076cc3..a2e5aa838c51 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 11ab244c9faead91683a12e4cb10d26b279bb4aa +refs/heads/master: 03513bccad33667ed738cfd96dc5757e539e0bdb diff --git a/trunk/drivers/s390/block/dasd.c b/trunk/drivers/s390/block/dasd.c index d984e0fae630..ccf46c96adb4 100644 --- a/trunk/drivers/s390/block/dasd.c +++ b/trunk/drivers/s390/block/dasd.c @@ -1149,12 +1149,14 @@ static void __dasd_device_process_final_queue(struct dasd_device *device, { struct list_head *l, *n; struct dasd_ccw_req *cqr; + struct dasd_block *block; list_for_each_safe(l, n, final_queue) { cqr = list_entry(l, struct dasd_ccw_req, devlist); list_del_init(&cqr->devlist); - if (cqr->block) - spin_lock_bh(&cqr->block->queue_lock); + block = cqr->block; + if (block) + spin_lock_bh(&block->queue_lock); switch (cqr->status) { case DASD_CQR_SUCCESS: cqr->status = DASD_CQR_DONE; @@ -1172,15 +1174,13 @@ static void __dasd_device_process_final_queue(struct dasd_device *device, cqr, cqr->status); BUG(); } - if (cqr->block) - spin_unlock_bh(&cqr->block->queue_lock); if (cqr->callback != NULL) (cqr->callback)(cqr, cqr->callback_data); + if (block) + spin_unlock_bh(&block->queue_lock); } } - - /* * Take a look at the first request on the ccw queue and check * if it reached its expire time. If so, terminate the IO.