On Wed, 31 Oct 2007, James Bottomley wrote: > OK, light beginning to go on now. > > The problem is that you've fallen into the conceptual trap we tried very > hard to avoid in the initial go around of joining SCSI upper layer > drivers to gendisks. That's why no gendisk references are held by the > mid-layer, only by the entities that represent the objects created by > upper layer drivers. > > Doesn't this circularity now exist for everything? Every device that > creates a queue has a reference to the queue, every queue has a > reference to its attached gendisk and now every gendisk has a reference > to the device creating the queue? This doesn't look to be a SCSI > specific problem. It probably isn't. I haven't looked at other subsystems but the scenario you described could well be the common case. Dropping a kobject's reference to its parent when the kobject is removed rather than when it is deleted will solve all these problems. The queue's reference to the gendisk and the gendisk's reference to the device will both be dropped when the device is unregistered, allowing the device and gendisk to be released. When the device is released it can then drop its reference to the queue, allowing the queue to be released. In other words, reverting that 4-year-old patch would fix everything. I'd still like to get your acknowledgement for my patch, posted here: http://marc.info/?l=linux-scsi&m=119368368904151&w=2 Alan Stern - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html