|
From: Luck, T. <ton...@in...> - 2011-10-28 19:02:24
|
> 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 |