- User Since
- Aug 6 2017, 12:45 AM (146 w, 5 d)
Tue, May 5
I approve of the approach.
Fri, May 1
First off, lots of good discussion here. I think this is the start of a good approach and I support committing it disabled.
Apr 27 2020
Apr 21 2020
Have you thought about whether there are any side-effects in swap behavior from using the same object? Might we run into clustering behavior?
Mar 16 2020
I think there may be a bug in this. busy_sleep may not properly wait for an exclusive lock if it is sleeping to zero a page while it is sbusy and the caller requested an sbusy after zeroing. Currently no caller does this so it is not going to cause problems. There are simply too many flags and it complicates things but I do not see an easy way to drop many.
Mar 11 2020
One other thing; I have submitted patches to drm to address these changes. I will have to bump FreeBSD_version and fix one extra case in drm-legacy because it is not written in a way that it can use vm_page_busy_acquire().
Mar 10 2020
I agree with mark. CK_LIST is just a copy of queue.h with ck barriers added. We want stronger assertions to tie to the smr interface. We have wide arm64 platforms available to us for testing now. I think the risk of incorrect barriers is minimal if we are conservative. The only real question is how often to require acquire load.
Mar 9 2020
Mar 6 2020
I am ok with this but eventually it likely should not be shared busy.
Would you not prefer to use an invalid value rather than a bit to hold the free state? i.e. VHOLD_NO_SMR would be something like VHOLD_DEAD 0xffffffff. Some of your asserts would have to be adjusted. The first ref should switch dead with 1.
I don't mind adding accessors after the fact. It will help us continue to make them more natural and less obtrusive if we can make this work with them.
So In general the naming scheme is:
vn_* or v* in older code for vnode specific routines.
vop_ for routines specific to ops.
vfs_ for global or mount.
Mar 5 2020
Overall this is nice and a better first example of smr than radix.
Mar 1 2020
also please put a comment in the pwd structure describing how the synchronization works. I believe I understand but am not 100%.
This is a good opportunity to push for idiomatic access.
Feb 28 2020
Feb 27 2020
Feb 26 2020
Upload the correct diff
Sometimes if you keep re-arranging pieces they shuffle into a more compact
Feb 25 2020
Fully handle sleep fail/nowait cases. Simplify a few lockless functions by
introducing another helper. Handle the object NULL assignment in a single
place with a compiler barrier.
I forgot to submit these comments
Feb 24 2020
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.