Messages in this thread | | | From | "Luck, Tony" <> | Date | Fri, 28 Oct 2011 12:02:15 -0700 | Subject | RE: [RFC][PATCH v2 -next 2/2] Adding lock operations to kmsg_dump()/pstore_dump() |
| |
> It ain't pretty but it moves things towards a more reliable message dump. > The odds of us needing to bust the spinlocks are really small. Most of > the time no one reads the pstore filesystem.
Does it really change the odds much? As you say, the common case is that pstore front-end doesn't have the lock held - so that case is unchanged. We can get the lock anyway, we don't need to bust it.
Looking at the uncommon case where the lock is held - that means that pstore was in the middle of some back-end operation. Busting the lock means that the back-end will be surprised by being called again when the first operation had not yet completed. In the case of a state machine driven back end like ERST, I don't think this has a high probability of working out well.
So you might be moving the needle from 99.999% chance of saving to pstore with 0.001% chance of hanging on the spin lock. to 99.9991% chance of saving, and 0.0009% chance of something highly weird happening in the back-end driver because you busted the lock and called it anyway.
> I would love to figure out a prettier solution for this locking mess, but > I can't think of anything. We have customers who want to utilize this > technology, so I am trying to make sure it is stable and robust for now. > A little selfish I suppose. But we are open to ideas?
If a prettier solution is needed - it will have to involve the back-end. Perhaps a whole separate write/panic path (with separate buffer). Then a sufficiently smart back end could do the right thing. I have little confidence that ERST could be made smart in this way, because almost all of the heavy lifting is done by the BIOS - so Linux has no way to influence the flow of execution.
-Tony
| |