Commit Graph

786 Commits

Author SHA1 Message Date
Edward Amsden
3acf8e74c1 serf: ensure locals are preserved and top frame flipped after PMA save 2023-12-15 10:00:38 -06:00
barter-simsum
02b1ae3dd2 pma: btest.c changes 2023-12-15 06:36:53 -05:00
barter-simsum
66aaa255f7 pma: fix freelist node size calculation in _mlist_insert 2023-12-15 06:36:30 -05:00
barter-simsum
031e583c3c pma: fix DPRINTF in bt_malloc 2023-12-15 05:38:35 -05:00
barter-simsum
965865da13 pma: mmap freespace ahead of first node partition 2023-12-15 03:24:42 -05:00
barter-simsum
40a04ec8ab pma: _bt_printnode print to stderr 2023-12-15 01:19:28 -05:00
Edward Amsden
a37cf3e779 pma: when persisting hamt check if buffer already in PMA 2023-12-15 00:15:40 -06:00
barter-simsum
ff204263ff pma: misc fixes
- primarily fixes a bug in _mlist_insert and _pending_flist_insert
- also updates some tests
- disables node data printing on _bt_insertdat with DEBUG_PRINTNODE macro
2023-12-15 00:50:26 -05:00
Edward Amsden
bdccac7ff2 pma: fixup of global static PMA 2023-12-14 22:17:25 -06:00
Edward Amsden
8fb0953247 pma: dirty in unifying equality
This changes the PMA to be a static global instead of a threaded-through handle.
We use a OnceLock to enforce one-time-only opening of the PMA. There is
no public PMA type any more, just a collection of module-level methods
which act through the global reference.

This is consistent with the assumptions of the underlying C code, that
there will be only one PMA open in a process, and avoids the need to
thread the PMA to unifying equality calls.
2023-12-14 21:42:31 -06:00
Edward Amsden
caeea6ec2d unifying equality: move to own module 2023-12-14 18:08:55 -06:00
barter-simsum
a509c2fabe pma: even more msync/mprotect changes 2023-12-14 16:40:42 -05:00
barter-simsum
a8b3619e9f pma: more msync/mprotect abort 2023-12-14 16:35:33 -05:00
Edward Amsden
fa30180b68 pma: noun and hamt persist fixes 2023-12-14 15:31:06 -06:00
barter-simsum
92c1a23b7d pma: abort on failed msync/mprotect 2023-12-14 16:30:29 -05:00
Edward Amsden
adfc9ddb10 pma: fix assert in save_to_pma 2023-12-14 14:28:27 -06:00
Sigilante
854e4bd544
Recomment debugging printfs 2023-12-14 09:39:49 -06:00
Edward Amsden
bfdb1b9eb7 pma: fix and simplify copy_to_buffer for Noun 2023-12-14 00:56:39 -06:00
Edward Amsden
5598442304 pma: fix save_to_pma buffer size assertions 2023-12-14 00:45:09 -06:00
Edward Amsden
59180a704b Merge branch 'revert-177-revert-175-eamsden/gc-top-frame' into eamsden/integrate-pma-tmp-fix-gc 2023-12-13 22:39:11 -06:00
barter-simsum
92bb42683d pma: fix c test3 2023-12-13 21:36:34 -05:00
Edward Amsden
be4a6552e1 Merge remote-tracking branch 'origin/status' into revert-177-revert-175-eamsden/gc-top-frame 2023-12-13 20:33:33 -06:00
barter-simsum
20693a32ce pma: tests 2023-12-13 21:32:45 -05:00
Edward Amsden
05b0609b5b 2stackz: comment explaining null checks in is_in_frame 2023-12-13 20:32:01 -06:00
Edward Amsden
f8615b5a4e 2stackz: lint 2023-12-13 19:53:33 -06:00
Edward Amsden
a98524bfd7 2stackz: format 2023-12-13 19:48:34 -06:00
Edward Amsden
046c435fa7 2stackz: fix is_in_frame check for top frame 2023-12-13 19:46:59 -06:00
Edward Amsden
b841fe2f63 hot: fix preserve instance 2023-12-13 19:46:39 -06:00
Alex Shelkovnykov
3d98ab2684
Merge pull request #179 from urbit/as/comments
docs: add comments explaining invariants / algorithms
2023-12-13 18:42:03 -06:00
Alex Shelkovnykov
51e8986327 docs: cargo fmt 2023-12-13 21:19:40 -03:00
barter-simsum
3786277230 pma: remove mkdir call from bt_state_open 2023-12-13 18:25:35 -05:00
Sigilante
3207660eac serf: placate linter 2023-12-13 14:33:04 -06:00
Sigilante
cd92209131 serf: placate linter 2023-12-13 14:31:34 -06:00
Sigilante
a715c961c5 serf: placate linter 2023-12-13 14:30:10 -06:00
Sigilante
b1eaf8e853 serf: placate linter 2023-12-13 14:20:38 -06:00
Sigilante
8438fe8e5d serf: removal of snapshotting 2023-12-13 14:14:59 -06:00
Alex Shelkovnykov
235d8c54f1 docs: add comments explaining invariants / algorithms 2023-12-13 12:11:56 -03:00
barter-simsum
c4b1888020 pma: update mprotect calls to use BT_PROT_* macros 2023-12-13 07:52:36 -05:00
barter-simsum
e630016584 pma: mmap changes appear to be working 2023-12-13 07:45:44 -05:00
barter-simsum
88fdfe0755 pma: misc bug fixes
currently debugging an "invalid argument" error in the mmap call in bt_free
2023-12-13 07:17:05 -05:00
barter-simsum
7dfc32681a pma: more mmap changes. WIP 2023-12-12 22:34:26 -05:00
Matthew LeVan
38c1b3cef3
Revert "Revert "2stackz: gc top frame by flipping polarity"" 2023-12-12 21:04:10 -05:00
Matthew LeVan
5bfc83673c
Revert "2stackz: gc top frame by flipping polarity" 2023-12-12 20:48:55 -05:00
barter-simsum
13b5f6bee6 pma: set protection of leaf data when syncing 2023-12-12 20:34:12 -05:00
barter-simsum
e96d7ecb4c pma: mmap and mprotect revisions wip 2023-12-12 18:23:37 -05:00
Edward Amsden
9271deb3d6 pma: set -DDEBUG for default profile 2023-12-11 23:16:32 -06:00
Edward Amsden
94d92e4a3e pma: add a missing ftruncate and mmap call, and lots of notes 2023-12-11 23:15:53 -06:00
Edward Amsden
bbaa758c95 hamt: fix persist instance 2023-12-11 23:15:18 -06:00
Edward Amsden
548dc3f3c4 hamt: when preserving, actually write outermost stem pointer back to mutable self 2023-12-11 19:06:57 -06:00
Edward Amsden
ede9918c03 pma: some quick fixes 2023-12-11 18:34:06 -06:00
Edward Amsden
fd1af932c6 2stackz: fix wrong-end previous allocation pointer in flip_top_frame() 2023-12-11 15:56:05 -06:00
Edward Amsden
7e110aa6c5 2stackz: assert is_west after reset
Co-authored-by: Jonathan Paprocki <51337059+drbeefsupreme@users.noreply.github.com>
2023-12-11 15:56:05 -06:00
Edward Amsden
1ee7ce5c32 2stackz: clarify doc comment on NockStack::reset
Co-authored-by: Jonathan Paprocki <51337059+drbeefsupreme@users.noreply.github.com>
2023-12-11 15:56:05 -06:00
Edward Amsden
002aba5f5b 2stackz: fix wrong-end previous allocation pointer in flip_top_frame() 2023-12-11 14:46:05 -06:00
Edward Amsden
c40fdc1ad4
2stackz: assert is_west after reset
Co-authored-by: Jonathan Paprocki <51337059+drbeefsupreme@users.noreply.github.com>
2023-12-11 14:18:34 -06:00
Edward Amsden
859b89f85c
2stackz: clarify doc comment on NockStack::reset
Co-authored-by: Jonathan Paprocki <51337059+drbeefsupreme@users.noreply.github.com>
2023-12-11 14:16:17 -06:00
Edward Amsden
fc3be96f00 serf: no need to GC stack in event-update as it happens at end of event loop 2023-12-11 09:11:16 -06:00
Edward Amsden
f7e6cc2770 serf: format 2023-12-11 08:59:38 -06:00
Edward Amsden
e3d4f57979 pma: fully integrate top-stack GC 2023-12-11 08:59:15 -06:00
Edward Amsden
5d2e937f5c Merge branch 'eamsden/gc-top-frame' into eamsden/integrate-pma-merge-tmp 2023-12-11 08:53:30 -06:00
Edward Amsden
7d0def5178 Merge branch 'status' into eamsden/integrate-pma-merge-tmp 2023-12-11 08:52:48 -06:00
Edward Amsden
74fa5127ff 2stackz: gc top frame by flipping polarity 2023-12-10 21:33:03 -06:00
Edward Amsden
baebb515e2 hamt: doc comments and cleanup 2023-12-09 11:46:47 -06:00
Edward Amsden
95e05b2dad pma: reorganization and doc comments 2023-12-09 11:32:48 -06:00
Edward Amsden
48817bb694 hamt: remove unused struct StemTraversalEntry 2023-12-09 11:18:42 -06:00
Edward Amsden
ef5954b3b1 serf: format 2023-12-08 23:16:50 -06:00
Edward Amsden
28d9032acd serf: comments about where to put warm and hot states 2023-12-08 23:16:17 -06:00
Edward Amsden
7a81e40829 pma: move most snapshot loading definition and logic into serf 2023-12-08 19:50:30 -06:00
Matthew LeVan
0590fd6f54 use convention 2023-12-08 20:31:16 -05:00
Matthew LeVan
34fd4651c6 preserve cache, cold, warm in with_stack_frame 2023-12-08 20:31:10 -05:00
barter-simsum
82cd52acb8 pma: _bt_delco: don't trim subtrees in leaves 2023-12-08 19:51:44 -05:00
barter-simsum
17d74aed49 pma: fix deletion coalescing first pass. update malloc tests 2023-12-08 19:40:37 -05:00
barter-simsum
10ed711da5 pma: fix _bt_delco hiidx iteration 2023-12-08 19:27:34 -05:00
barter-simsum
81f58631e1 pma: fix _pending_nlist_insert and _mlist_insert 2023-12-08 18:58:24 -05:00
barter-simsum
e7bc9f34ac pma: malloc test update
debugging mlist coalescing and deletion coalescing issues
2023-12-08 18:40:15 -05:00
barter-simsum
d75aed7bd2 pma: various bug fixes
- initialize root to page offset beyond first node stripe (not zero). Is this
improper? We initialize the mlist at the first va in the root. Maybe that part
should handle the node stripes instead? Don't know if it actually matters.

- fix insert tests

- fix state->meta_pages initialization

- other minor fixes
2023-12-08 18:15:31 -05:00
barter-simsum
d1139abf9c pma: fix bt_sync segfault 2023-12-08 17:41:18 -05:00
Edward Amsden
d7236aed41 interpreter: add with_stack_frame method to context 2023-12-08 12:44:55 -06:00
Edward Amsden
529d8786cd stack: pass stack to with_frame closure 2023-12-08 12:28:04 -06:00
Edward Amsden
52a25a4516 2stackz: make with_frame preserve result and add preserve instances for Result and errors 2023-12-08 12:23:38 -06:00
barter-simsum
3eb0b3a5d5 pma: implement bt_state_close to a sufficient degree 2023-12-07 18:40:27 -05:00
Edward Amsden
654fd8bf0a
Merge branch 'status' into eamsden/add-bacon 2023-12-07 09:48:51 -06:00
Edward Amsden
b082af0859 PMA: throw unimplemented when trying to open on windows 2023-12-07 09:41:16 -06:00
Alex Shelkovnykov
3407f0202c jets: clean up comments 2023-12-07 12:21:02 -03:00
Alex Shelkovnykov
2f86f30b8a jets: move useful function into jet utils 2023-12-07 12:18:40 -03:00
Edward Amsden
03ad01d23d pma: fix up last rust todos 2023-12-07 01:36:53 -06:00
Edward Amsden
863afcd7ef pma: format 2023-12-07 01:34:47 -06:00
Edward Amsden
70e0f6abd5 pma: re-initialize hot state after stack reset 2023-12-07 01:28:21 -06:00
Edward Amsden
d321a13da8 pma: Preserve instance for Cold 2023-12-07 01:28:07 -06:00
Edward Amsden
bd31c02baa pma: Persist instance for NounList 2023-12-07 01:19:27 -06:00
Edward Amsden
295da34cf8 pma: preserve instance for BatteriesList 2023-12-07 01:07:26 -06:00
Edward Amsden
06da6c6757 pma: persist instance for Batteries 2023-12-07 00:10:19 -06:00
Edward Amsden
6cce3cc2ed devshell: add bacon (better cargo-watch) 2023-12-06 23:09:53 -06:00
Edward Amsden
6d7a8a1283 devshell: add bacon 2023-12-06 23:08:53 -06:00
Edward Amsden
07c541e87e pma: fix warning in build script 2023-12-06 23:08:53 -06:00
Edward Amsden
76fa10e1ea pma: persist instance for Hamt 2023-12-06 23:08:53 -06:00
barter-simsum
e4695f641c pma: misc bug fixes in _bt_state_load 2023-12-06 18:23:33 -05:00
barter-simsum
f07bc63e01 pma: test restructuring 2023-12-06 18:17:51 -05:00
Matthew LeVan
030218df9f cargo: clippy lint 2023-12-06 16:50:41 -05:00
Matthew LeVan
79819b7795 cargo: format 2023-12-06 16:46:37 -05:00
Matthew LeVan
b7cb624b85 Merge branch 'status' into msl/parse-jets 2023-12-06 16:45:22 -05:00
Matthew LeVan
b99355b23a jets: fix jet_here mismatch 2023-12-06 16:34:02 -05:00
Matthew LeVan
8dabcf2395 jets: fixed jet_here 2023-12-06 16:12:28 -05:00
Sigilante
e9dbb2fd08 Add unit tests for easy. 2023-12-06 13:46:29 -06:00
barter-simsum
1cdb55ce7f pma: _bt_state_restore_maps2 2023-12-06 14:05:54 -05:00
Matthew LeVan
6deb05348e Merge branch 'status' into msl/parse-jets 2023-12-06 11:19:42 -05:00
Edward Amsden
a09010bca5 jets: fix lint on hot state constant 2023-12-06 08:37:46 -06:00
Edward Amsden
4b4eb012be jets: format 2023-12-06 08:34:12 -06:00
Edward Amsden
d5fc700129 jets: a bit of external developer friendliness for hot state 2023-12-06 08:33:34 -06:00
Edward Amsden
93e7ca016f serf: accept hot state as parameter 2023-12-06 08:33:30 -06:00
Edward Amsden
473263eabb
Merge pull request #159 from urbit/eamsden/minimal-main
main: just be a serf, panic if not a serf
2023-12-06 08:30:38 -06:00
Edward Amsden
f2e9aa1e94 main: format 2023-12-06 08:24:13 -06:00
Edward Amsden
b9a0b37789
Merge pull request #161 from urbit/msl/upgrade-urcrypt-1
build: support latest `urcrypt`
2023-12-06 08:18:25 -06:00
Alex Shelkovnykov
d07ffe5bdb
Merge branch 'status' into eamsden/context-restore 2023-12-06 07:40:17 -06:00
Alex Shelkovnykov
1d777a60dd serf: bump NockStack size to 4GB 2023-12-06 10:31:29 -03:00
Edward Amsden
1f68d65bb8 hamt: allocate outermost stem on NockStack 2023-12-05 23:32:39 -06:00
Philip Quirk
e7d76a3818 reset cache before work_swap 2023-12-05 21:18:02 -06:00
barter-simsum
87320843de pma: remove old node freelist implm and refactor _bt_state_load 2023-12-05 21:39:21 -05:00
barter-simsum
2b6f5fdc26 pma: abort if mmap calls return MAP_FAILED 2023-12-05 21:21:26 -05:00
barter-simsum
df591e419f pma: increment meta.txnid on sync 2023-12-05 21:19:03 -05:00
barter-simsum
b957bb6c5b pma: misc fixes 2023-12-05 19:29:56 -05:00
barter-simsum
a820222566 pma: remove .meta_fd from BT_state 2023-12-05 19:29:35 -05:00
barter-simsum
984b7dcdfb pma: fix mmap call in _bt_data_cow 2023-12-05 17:25:09 -05:00
Alex Shelkovnykov
aa002b47ee jets: remove unnecessary helper struct 2023-12-05 16:23:55 -03:00
Alex Shelkovnykov
adbd8a3603 jets: consolidate virtualization logic 2023-12-05 16:17:38 -03:00
Matthew LeVan
4451a342c4 build: support latest urcrypt 2023-12-05 10:54:18 -05:00
Edward Amsden
35301c6e12 pma: copy nouns in 2023-12-04 22:55:32 -06:00
Alex Shelkovnykov
ff08e07b3f jets: touch up previous commit 2023-12-05 00:56:12 -03:00
Edward Amsden
1c88d390e3 pma: space_needed for Noun 2023-12-04 20:50:07 -06:00
barter-simsum
d1ee3f673d pma: misc
cleans up code. clearing comments and unnecessary struct members

also fixed lowidx calculation bug in deletion coalescing routines
2023-12-04 20:13:33 -05:00
barter-simsum
bbe034e382 pma: _mlist_insert 2023-12-04 19:50:20 -05:00
Edward Amsden
712f90e62c main: just be a serf, panic if not a serf 2023-12-04 18:29:15 -06:00
Edward Amsden
1395d4b885 pma: remove previous PMA code 2023-12-04 18:18:29 -06:00
Edward Amsden
7112890b96 pma: take snapshots from serf 2023-12-04 18:07:51 -06:00
Edward Amsden
267a1a3cd5 pma: skeleton of integration into ares 2023-12-04 16:24:48 -06:00
Edward Amsden
ebb5a4063d snapshot: strip out old snapshotting code to make way for PMA 2023-12-04 16:24:48 -06:00
barter-simsum
7935f531ff pma: call pending freelist merge routines in bt_sync 2023-12-04 17:11:54 -05:00
barter-simsum
5beb2da584 pma: rewrite _pending_nlist_merge 2023-12-04 17:07:48 -05:00
barter-simsum
bbc1c88120 pma: amend _pending_flist_merge 2023-12-04 17:07:38 -05:00
barter-simsum
9708b47eca pma: _pending_flist_merge one line change 2023-12-04 16:31:49 -05:00
barter-simsum
520f8133ab pma: _pending_flist_merge
did I do this right? need to review. additionally, need to rewrite
_pendling_nlist_merge
2023-12-04 16:26:51 -05:00
barter-simsum
89eb301914 pma: some pending_flist operations. still need merge 2023-12-04 15:28:25 -05:00
Edward Amsden
1c80366066 virtualization: properly restore cold/warm states, cache, and scry stack when catching an error 2023-12-04 13:02:35 -06:00
barter-simsum
6a41cc156c pma: amend _bt_data_cow 2023-12-04 13:47:33 -05:00
barter-simsum
db5ee1e371 pma: fix ADDR2OFF and OFF2ADDR. amend all sites that improperly handle vaof_t
this should be closely inspected. additionally fixed _bt_data_cow implementation
and a few other misc things
2023-12-04 13:36:50 -05:00
barter-simsum
14f82b45a8 pma: bt_inbounds 2023-12-04 12:37:53 -05:00
barter-simsum
3c0d34dd11 pma: modifications to bt_dirty and _bt_data_cow 2023-12-02 08:02:14 -05:00
barter-simsum
d7ffdc47de pma: bt_dirty partial implm 2023-12-01 23:17:38 -05:00
barter-simsum
dc760add87 pma: amend bt_next_alloc impl 2023-12-01 16:37:18 -05:00
barter-simsum
2aae3d046b pma: implement bt_next_alloc 2023-12-01 16:30:14 -05:00