We're dropping the periph lock then dropping the refcount. However,
that violates the locking protocol and is racy. This seems to be
the cause of weird occasional panics with a bogus assert.
Sponsored by: Netflix
Differential D15517
We can't release the refcount outside of the periph lock. imp on May 21 2018, 11:06 PM. Authored by Tags None Referenced Files
Details
We're dropping the periph lock then dropping the refcount. However, Sponsored by: Netflix
Diff Detail
Event TimelineComment Actions Looks good to me. The only rough edge I see is that outstanding_cmds is used only for the newly added assertion, that is why it was so broken before this and nobody cared. Comment Actions Running fine for me. Reduced amount of panics, it looks like. Haven't run it for very long though. Comment Actions Yes. I think ada has similar issue with its oustanding_cmds. It's where I got it from :) However, you're right: this is pure bug detection code. I thought about putting something like then adding I( ) around this stuff, but I decided against that for the moment... Comment Actions I've been running this patch since Tuseday evening without any issues. Without it I get a panic almost immediately when my disk is read, sometimes even before hitting multi user. Is it possible to get it committed, or what is the holdup? Comment Actions As I have told, I have no objections. I still don't like the global counters, since they mean we can never remove respective lock or at least atomics, but for now I can live with that. It is better then broken code. |