John Ericson
250c3541bb
Use local-overlay://
not local-overlay
for store URL
...
This is a bit uglier, but allows us to avoid an ad-hoc special case in
`store-api.cc`.
2023-10-25 15:29:11 -04:00
John Ericson
6f0a95897c
Revert "Fix hard linking issue causing overlay fs copy-ups"
...
This reverts commit 9ef0a9e8aa
.
Master now has a better solution.
2023-10-25 14:20:40 -04:00
John Ericson
d137002e94
Add API docs for all overridden local overlay methods
...
These docs explain the implementation relative to the local store
originals. The original declaration of virtual methods can still be
consulted for proper interface-level documentation.
2023-08-03 17:28:18 -04:00
John Ericson
4d99e407fd
Remove FIXME on why something doesn't work
...
I now know it is due to
https://github.com/llvm/llvm-project/issues/64108 . The workaround is
just fine and already in use in this codebase.
2023-08-03 12:12:54 -04:00
John Ericson
4f5b01f5cd
Start to document the local-overlay store
2023-08-03 12:10:13 -04:00
John Ericson
4b9a621812
Guard the local overlay store behind an experimental feature
2023-08-02 20:30:42 -04:00
John Ericson
6b297e5895
Make verifyAllValidPaths
more functional
...
return map rather than mutate one passed in by reference
2023-08-02 14:38:22 -04:00
Ben Radford
c712369ec5
Document remount-hook store parameter.
2023-08-01 12:48:02 +01:00
Ben Radford
c409a753db
Fix new lines in comment.
2023-08-01 12:48:02 +01:00
Ben Radford
1255866e16
Update src/libstore/local-overlay-store.hh
...
Co-authored-by: John Ericson <git@JohnEricson.me>
2023-08-01 12:48:02 +01:00
Ben Radford
6a8de4c9dc
Avoid enumerating entire overlay store dir upfront.
...
As an optimisation for LocalStore, we read all the store directory entries into
a set. Checking for membership of this set is much faster than a stat syscall.
However for LocalOverlayStore, the lower store directory is expected to contain
a vast number of entries and reading them all can take a very long time.
So instead of enumerating them all upfront, we call pathExists as needed. This
means making stat syscalls for each store path, but the upper layer is expected
to be relatively small compared to the lower store so that should be okay.
2023-08-01 12:48:02 +01:00
John Ericson
621bdbdb31
Merge branch 'overlayfs-store' into delete
2023-07-26 12:01:08 -04:00
Ben Radford
3a9fe1a085
Made remountRequired atomic to avoid concurrency issues.
2023-07-26 16:01:20 +01:00
Ben Radford
ed14286924
Invoke remount-hook program when necessary.
2023-07-26 16:01:20 +01:00
Ben Radford
33ebae75ca
Reuse deletion logic for optimiseStore and rename method.
2023-07-26 16:01:20 +01:00
Ben Radford
11c493f8fa
Avoid creating whiteout for duplicate store paths.
2023-07-26 16:01:20 +01:00
Ben Radford
d9688ba708
Add new remount-hook store parameter.
2023-07-26 16:01:20 +01:00
John Ericson
07b34edc44
Fix deletion test
...
Lower layer references are ignored for deleting just in the upper layer.
2023-07-25 18:09:02 -04:00
John Ericson
9ef0a9e8aa
Fix hard linking issue causing overlay fs copy-ups
2023-07-25 10:28:11 -04:00
Ben Radford
497464f494
Extend verify test to check that repair is supported.
2023-07-25 13:33:37 +01:00
Ben Radford
614efc1240
Add test for store optimise path deduplication.
2023-07-20 10:42:39 +01:00
Ben Radford
d5cd74a401
Override verifyStore to always pass NoRepair for LocalOverlayStore.
2023-07-20 10:42:39 +01:00
John Ericson
2add230939
Fix build
2023-07-09 21:53:06 -04:00
Ben Radford
ee1241da86
Remove unnecessary overrides of add methods.
2023-06-06 12:21:17 +01:00
Ben Radford
a48acfd684
Skip deletion of lower paths for overlay store GC.
2023-06-06 12:21:17 +01:00
Ben Radford
4d69bd034a
More detailed explanation of check-mount setting.
2023-05-16 17:27:49 +01:00
Ben Radford
0df37edb1c
Make upper-layer a PathSetting instead of a Setting<string>.
2023-05-15 17:34:31 +01:00
Ben Radford
b5591ece4c
Check that overlay store directory is mounted correctly.
...
Nix does not manage the overlayfs mount point itself, but the correct
functioning of the overlay store does depend on this mount point being set up
correctly. Rather than just assume this is the case, check that the lowerdir
and upperdir options are what we expect them to be. This check is on by
default, but can be disabled if needed.
2023-05-15 17:34:31 +01:00
John Ericson
4173743a3c
Implement more queries
2023-05-09 17:20:58 -04:00
John Ericson
e7c3399ed2
Specialize LocalOverlayStore::queryPathFromHashPart
...
With test
2023-05-09 10:40:10 -04:00
John Ericson
ddaf2750b5
Specialize more methods, fix tests
2023-05-09 10:22:38 -04:00
John Ericson
b3d320c594
Convert more methods
...
Fixed one test, broke another
2023-05-08 18:50:16 -04:00
John Ericson
5406256d78
Specialize LocalOverlayStore::queryPathInfoUncached
2023-05-08 17:30:17 -04:00
John Ericson
31e98ed0a0
Specialize LocalOverlayStore::registerDrvOutput
2023-05-08 16:48:55 -04:00
John Ericson
f0a176e2f1
Init local overlay store
2023-05-08 10:20:06 -04:00