1
0
Fork 0
alistair23-linux/block
Linus Torvalds 1a2acc9e92 Revert "[BLOCK] Fix oops on removal of SD/MMC card"
This reverts commit 56cf6504fc.

Both Erik Mouw and Andrew Vasquez independently pinpointed this commit
as causing problems, where the slab cache for a driver is never released
(most obviously causing problems when immediately re-loading that
driver, resulting in a "kmem_cache_create: duplicate cache <xyz>"
message, but it can also cause other trouble).

James Bottomley dug into it, and reports:

  "OK, here's the scoop.  The problem patch adds a get of driverfs_dev in
   add_disk(), but doesn't put it again until disk_release() (which occurs
   on final put_disk() of the gendisk).

   However, in SCSI, the driverfs_dev is the sdev_gendev.  That means
   there's a reference held on sdev_gendev  until final disk put.
   Unfortunately, we use the driver model driver_remove to trigger
   del_gendisk (which removes the gendisk from visibility and decrements
   the refcount), so we've introduced an unbreakable deadlock in the
   reference counting with this.

   I suggest simply reversing this patch at the moment.  If Russell and
   Jens can tell me what they're trying to do I'll see if there's another
   way to do it."

so hereby the patch gets reverted, waiting for a better fix.

Cc: Jens Axboe <axboe@suse.de>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Erik Mouw <erik@harddisk-recovery.com>
Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-05-12 12:08:46 -07:00
..
Kconfig [PATCH] config: fix CONFIG_LFS option 2006-03-31 12:18:55 -08:00
Kconfig.iosched [BLOCK] iosched: fix setting of default io scheduler 2005-11-04 08:44:58 +01:00
Makefile [PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23 2006-03-23 20:00:26 +01:00
as-iosched.c [PATCH 1/2] iosched: fix typo and barrier() 2006-04-18 09:44:06 +02:00
blktrace.c [PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23 2006-03-23 20:00:26 +01:00
cfq-iosched.c [PATCH] cfq: Further rbtree traversal and cfq_exit_queue() race fix 2006-04-18 19:18:31 +02:00
deadline-iosched.c [PATCH] fix rmmod problems with elevator attributes, clean them up 2006-03-18 22:27:18 -05:00
elevator.c [BLOCK] limit request_fn recursion 2006-05-11 12:38:59 -07:00
genhd.c Revert "[BLOCK] Fix oops on removal of SD/MMC card" 2006-05-12 12:08:46 -07:00
ioctl.c [PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23 2006-03-23 20:00:26 +01:00
ll_rw_blk.c [BLOCK] limit request_fn recursion 2006-05-11 12:38:59 -07:00
noop-iosched.c [BLOCK] noop-iosched: reimplementation of request dispatching 2005-11-12 10:56:52 +01:00
scsi_ioctl.c [SCSI] unify SCSI_IOCTL_SEND_COMMAND implementations 2006-04-13 10:13:15 -05:00