On Wed, 2007-10-31 at 16:40 +0100, Kay Sievers wrote: > On Wed, 2007-10-31 at 10:15 -0500, James Bottomley wrote: > > On Wed, 2007-10-31 at 07:32 -0700, Greg KH wrote: > > > Hm, I seem to have missed the part in this thread where someone said > > > that it was valid to have a parent reference a child device. That's > > > just wrong and needs to be fixed. Is that in the scsi layer somewhere? > > > The block layer? It sure isn't in the driver core... > > > > This is the piece I'm still not clear on. It's something to do with the > > gendisk. I'd have to look in block, but I believe the queue takes a ref > > to the gendisk. > > Yes, the queue is a child of the disk. Right, so this goes gendisk->queue (-> meaning parent of, or takes reference to) > > The scsi_device has a ref to the queue > > Yeah, while the queue is a grandchild of the scsi_device with the > unified sysfs layout. No, the scsi_device is a direct parent of the queue, so we have scsi_device->queue > > and the scsi_disk (in sd) has a > > ref to both the scsi_device and the gendisk. That means, until sd is > > unbound and the scsi_disk released, there's an implied unbreakable > > reference chain. > > > > at least, I think that's what the problem is. > > Yes, sounds right. We need to break that deleted-but-wait-for-cleanup at > least at one of the devices involved. But it's broken when the driver is unbound. Diagrammatically it's: scsi_disk -> scsi_device -> queue -> gendisk -> It's not circular, it's released when scsi_disk is released. It can become circular if there's some hidden dependency between any of the components ... but I don't think there is. James - 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