linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -next] s390/dasd: hold request queue sysfs lock when calling elevator_init()
@ 2013-10-31 13:21 Heiko Carstens
  2013-10-31 14:14 ` Jens Axboe
  0 siblings, 1 reply; 2+ messages in thread
From: Heiko Carstens @ 2013-10-31 13:21 UTC (permalink / raw)
  To: Tomoki Sekiyama, Jens Axboe, Stefan Weinhuber
  Cc: Martin Schwidefsky, linux-next

Hi Tomoki and Jens,

due to a change in linux-next the patch below is needed for s390 as well.
It looks to me as if the easiest way to get this patch upstream during
the next merge would be via the s390 tree.
Even though I'd much more like if we could get rid of the elevator_init()
call from the dasd driver, but Stefan is still reluctant ;)

>From a59819b17c4a2d06b48ee44236d848161d8d8bb9 Mon Sep 17 00:00:00 2001
From: Heiko Carstens <heiko.carstens@de.ibm.com>
Date: Thu, 31 Oct 2013 13:24:28 +0100
Subject: [PATCH] s390/dasd: hold request queue sysfs lock when calling
 elevator_init()

"elevator: Fix a race in elevator switching and md device initialization"
changed the semantics of elevator_init() in a way that now enforces to hold
the corresponding request queue's sysfs_lock when calling elevator_init()
to fix a race.
The patch did not convert the s390 dasd device driver which is the only
device driver which also calls elevator_init(). So add the missing locking.

Cc: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
---
 drivers/s390/block/dasd.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 244f77f844f0..f302efa937ef 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2979,12 +2979,12 @@ static int dasd_alloc_queue(struct dasd_block *block)
 
 	elevator_exit(block->request_queue->elevator);
 	block->request_queue->elevator = NULL;
+	mutex_lock(&block->request_queue->sysfs_lock);
 	rc = elevator_init(block->request_queue, "deadline");
-	if (rc) {
+	if (rc)
 		blk_cleanup_queue(block->request_queue);
-		return rc;
-	}
-	return 0;
+	mutex_unlock(&block->request_queue->sysfs_lock);
+	return rc;
 }
 
 /*
-- 
1.8.3.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH -next] s390/dasd: hold request queue sysfs lock when calling elevator_init()
  2013-10-31 13:21 [PATCH -next] s390/dasd: hold request queue sysfs lock when calling elevator_init() Heiko Carstens
@ 2013-10-31 14:14 ` Jens Axboe
  0 siblings, 0 replies; 2+ messages in thread
From: Jens Axboe @ 2013-10-31 14:14 UTC (permalink / raw)
  To: Heiko Carstens
  Cc: Tomoki Sekiyama, Stefan Weinhuber, Martin Schwidefsky, linux-next

On Thu, Oct 31 2013, Heiko Carstens wrote:
> Hi Tomoki and Jens,
> 
> due to a change in linux-next the patch below is needed for s390 as well.
> It looks to me as if the easiest way to get this patch upstream during
> the next merge would be via the s390 tree.
> Even though I'd much more like if we could get rid of the elevator_init()
> call from the dasd driver, but Stefan is still reluctant ;)

I'll queue it up in the drivers branch of the 3.13 queue, that'll keep
it closer to the breakage. And yes, that hack should die a horrible
death.

-- 
Jens Axboe

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-10-31 14:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-31 13:21 [PATCH -next] s390/dasd: hold request queue sysfs lock when calling elevator_init() Heiko Carstens
2013-10-31 14:14 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).