NAS-141261 / 27.0.0-BETA.1 / Serialize rootfs read-only/sysext toggles with a shared lock (#19069)
Remove the ability for concurrent calls to do things with root
filesystem unlocked (either administratively through
disable-rootfs-protection) or internal middleware callers that do things
in /usr to clobber each other.
Protection takes belt-and-suspenders approach of taking pthread lock,
then taking flock.
18153 loader: clean up smatch warnings in loader (pre-userboot)
Reviewed by: Gordon Ross <gordon.w.ross at gmail.com>
Approved by: Dan McDonald <danmcd at edgecast.io>
[clang] fix assertion for DeducedAsPack DeducedTemplateSpecializationType
This fixes a regression introduced in #186727, which was never released,
so there are no release notes.
Fixes #200418
[clang] Reland: fix getTemplateInstantiationArgs (#201373)
Relands #199528
This implements a new strategy for collecting the template arguments, by
relying on the qualifiers and template parameter lists to navigate the
template
context of out-of-line definitions.
This greatly simplifies the signature of that function, by removing a
bunch
of workarounds, and simpliffying a couple that weren't removed yet.
Since this now relies on qualifiers and template parameter lists,
this patch expends most of its effort making sure these are placed,
transformed and propagated to template instantiations.
Also makes the explicit specialization AST nodes stop abusing the
template
parameter lists by storing it's own template parameter list, creating a
dedicated field for them, similar to partial specializations.
[cmake] Add llvm-nm before lldb (#201648)
After #199152, CMake failed for me with:
```
CMake Error at cmake/modules/AddLLVM.cmake:2805 (get_target_property):
get_target_property() called with non-existent target "llvm-nm".
Call Stack (most recent call first):
F:/Dev/llvm-project/lldb/source/API/CMakeLists.txt:205 (get_host_tool_path)
```
I'm not sure why it didn't fail in CI or on the buildbots. The fix here
is to add llvm-nm before lldb like we do with other projects.
Improve system dataset moves
* Use FD-based mount APIs for moving around system datasets
* Use zfs send/recv for shifting system datasets between pools
* Use mounting beneath + unmounting on top combined with
stopping / starting services to ensure that we're as close as
possible to being atomic with these moves.