On Tue, 2015-04-14 at 19:52 +0300, Sagi Grimberg wrote: > When I set up a DIX enabled device for the first time (say > scsi_debug) it all works, but when I remove it > and set it up again I get the below crash: > > Reproducer: > $modprobe scsi_debug dif=1 dix=1 > $modprobe -r scsi_debug > $modprobe scsi_debug dif=1 dix=1 > > It seems that somehow bdi_destroy() is not > invoked for DIX... That implies a refcount imbalance on the block queue. Either from a stray get (which looks impossible, because we only do queue gets and puts in two places) or because there's an outstanding request, or because there's an imbalance higher up. Could you instrument and check we call scsi_device_dev_release_usercontext() for the device (that should do the final put). If that's not happening, then we have an imbalance on the scsi device itself. Thanks, 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