- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Feb 22 2020
Feb 21 2020
If there are no objections I will commit this version.
Name my SMR variant GUS for Global Unbounded Sequences.
Feb 20 2020
Feb 19 2020
I rewrote lazy smr to lazily update s_wr_seq but otherwise use the rest
of the machinery for normal smr. The read side lost a branch and the
code is better contained. ticks now gates s_wr_seq updates similar
to deferred mode. There are some annoying conditions around 0 and
very stale state. In the process I refactored some code because poll()
is getting very long due to comments.
Feb 18 2020
Simplify by storing 0 corrected ticks in td_wr_seq. This gives no branches
in the enter section and simpler code elsewhere.
Feb 17 2020
Use temporary assignments to enforce types instead of asserts.
I have tested this off and on for several days without issue.
I don't mind this in principal but I would rather it was a new api entirely. We need relatively few of the refcount features. Just acquiren/releasen/wait. So I'd rather have it named as some kind of barrier or semaphore.
Feb 16 2020
Ok, yes, the issue is we never created a leaf for this lone cpu.
I would like to point out that to see the EINTR race the user would have to register a callback for rtld to call while not blocking signals itself and having registered a handler that then communicates information with the EINTR return case in the callback. I doubt this is even spec defined behavior and if linux is even weaker than we are they are more likely to just crash there.
This would be a good use for tick based (non-atomic) smr. It would have a cheaper simpler write path. I don't object to this patch but it might get replaced again.
So this looks to me like we made a bad topology and then worked around it by weakening the search. This should still make the leaf topology node for the lone cpu. Otherwise ULE will make bad decisions.
lockstatus should also be an inline in the header.
It seems non-debug has only post handlers for knote etc.
It may be minorly useful to keep the ioctl definitions so that they are not-reused but I'm not sure what value we get necessarily from the switch statements. If there is some I'd prefer to group them and fallthrough to ENOTSUPP.
This makes two major changes:
Use atomic_load()
Use atomic_load. Add an assert.
I am mostly happy with this now and it is doing well on stress after a few small errors.
Fix some imax bugs and address my own feedback.
Implement mjg's suggestion
I like the suggestion but I'm not sure how I feel about declaring everywhere. Hopefully others will chime in.
Feb 14 2020
What about the interrupt changes?
Feb 13 2020
One more things, round-robin domains use all zone domains now but load balance them. This is for lock contention reasons on large machines.
I've seen this change. Was it benchmarked? I'm afraid result might be different to what was before, cause batching inside single call into interrupt handler be definition is a smaller batching than on top of it.
Feb 12 2020
I don't object but I haven't entirely understood it.
Feb 11 2020
Feb 10 2020
Try to name more consistently. Minor refactoring. Use the unlocked sleep.
My point is different.
Fix a copy & paste comment error. Clean up some wording.
One final bug to pass stress; when we fault out and back in we may have
valid swap backing for busy pages. This can deadlock with swapoff. This
also means we're not freeing swap space that had been used by kernel
stacks.