All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Mike Snitzer <snitzer@redhat.com>,
	Jens Axboe <jaxboe@fusionio.com>, unsik Kim <donari75@gmail.com>,
	Martin Schwidefsky <mschwid2@linux.vnet.ibm.com>,
	Heiko Carstens <heicars2@linux.vnet.ibm.com>
Subject: [RFC] Switching block device elevators
Date: Mon, 16 Aug 2010 16:52:35 +0200	[thread overview]
Message-ID: <4C6950B3.8020702@linux.vnet.ibm.com> (raw)

After commit 1abec4fdbb142e3ccb6ce99832fae42129134a96, "block: make 
blk_init_free_list and elevator_init idempotent", we're seeing kernel 
panics in our s390 tape block device driver. The panic is triggered 
because our driver tries to replace the default elevator with a noop 
elevator by calling elevator_exit() directly followed by elevator_init().

Since the commit, elevator_init() returns 0 if request_queue->elevator 
is non-null, even though it does not install a new elevator. As a 
result, the next access to the elevator finds a pointer to the old one 
which was already freed and a panic is triggered. Our current fix 
consists of setting the elevator pointer to NULL after elevator_exit().

There is at least one other driver where the problem currently exists 
(drivers/block/mg_disk.c, author on cc) and another s390 driver where 
the problem was only accidentally fixed before 2.6.35. I'm wondering if 
there's a better solution (apart from not forcing an elevator) and would 
like to hear everyone's opinion on this matter. How about declaring 
elevator_switch() non-static, for example?


Regards,
   Peter Oberparleiter


             reply	other threads:[~2010-08-16 14:54 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-16 14:52 Peter Oberparleiter [this message]
2010-08-16 15:44 ` Switching block device elevators Mike Snitzer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C6950B3.8020702@linux.vnet.ibm.com \
    --to=oberpar@linux.vnet.ibm.com \
    --cc=donari75@gmail.com \
    --cc=heicars2@linux.vnet.ibm.com \
    --cc=jaxboe@fusionio.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mschwid2@linux.vnet.ibm.com \
    --cc=snitzer@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.