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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to