;; -*- Mode: kotl -*- "Kotl-4.0" ;; file-format  1. address-space problem 1a. first need to properly understand the kernel (and process) address maps etc. 1b. could continue to get meta-data from user-space, and require that each pmm process mmap the necessary partitions in a known location 1b1. this is a kludge, and performance may be bad 1b1a. can test the performance with a prototype 1c. could arrange to map the meta-data into the kernel map 1c1. prototype this - see "./data-access.kotl" 1c1a. DON'T BE TOO FUSSY about the meta-data API etc., these will probably change after prototyping 1c1b. but so much stuff is implemented now that the easiest prototype may well be (an incomplete version of) pmm itself 1c1b1. what is missing ? 1c1b1a. allocator for kernel VM 1c1b1a1. see "memory-allocation.kotl" 1c1b1b. how can we create meta-data ? 1c1b1b1. does not matter for the sake of mounting an autonomous partition 1c1b1b2. once we can mount an autonomous partition, then some user-space tool can setup meta-data within it 1c1b1b2a. this user-space tool will get complicated 1c1b1b2a1. it should be written in Haskell 2. fix block_meta_data_api.h 2a. should filenames be hyphenated or underscored ?? 2a1. hyphenated is okay (except when the module is named after a type) 2a1a. but hyphenated multi-slurp protection is not okay 2a1b. and there is much to be said for consistency 2a1c. consider changing all hyphenated filenames to use underscores 2a2. put kernel-space/kernel-independent/partition-handling/registry/src/partition_registry.h back 3. maybe keep API approach to meta-data, and worry about inlining it later, if it looks worthwhile 3a. the API is useful - for example for concocting block meta-data for autonomous partitions 4. remember to use API approach to kernel interface 5. using mmap may carry a lot (perhaps a fatal amount) of baggage, due to kernel mis-design 5a. mmap.c:238 looks like a bug - it should return -EINVAL, but returns success instead 5b. the check at mmap.c:305 will not suit pmm, unless we give the MAP_NORESERVE flag 5b1. this seems to be the only problem 5c. consider alternatives 6. fix inodes and dentrys, and mount partition 6a. Glue extradis optimise bug 6b. why did Glue not recurse into kernel-space/linux ? A bug in Glue ? Probably not 6c. then remove unneeded address-space operations 6d. what is a dentry - maybe text books or google can help 6d1. see dcache.h, dcache.c 7. maybe simplify partition registry path 8. maybe need to rename away pmmfs to something like "pmm data fs", and need a name for "pmm log fs" 8a. if we keep the pmm prefix, these will be a bit long 8a1. maybe pmmfs and pmmlogfs ? 8a1a. this may be okay, because the latter is fairly trivial 9. start registration, mapping etc. APIs 9a. remember to use const, and keep private functions private 9b. continue with partition registration - fix autonomous partition mess 9c. maybe we can identify a partition by its superblock 9d. is the API a strict superset of the ADT(s) ? 9d1. possibly - at least this seems to be the clean way to do it 9d2. one can imagine that re-usable code in the API implementation could use the ADT. The API code need only be compiled once (unlike the ADT code) 9d2a. then we will end up with more fn calls and more fn names - include ADT name in fn name  "ben" ;; kvspec:current 243 ;; id-counter alpha ;; label-type 4 ;; label-min-width ". " ;; label-separator 3 ;; level-indent  ;; depth-first kcell attributes [[0 (creator "trb@eastpac.com.au" create-time "20020122:21:38:07" id-counter 243 file "/usr/local/wks/trb/hack/pmm/doc/plan.kotl")] [157 (creator "trb@eastpac.com.au" create-time "20010428:22:19:45" no-fill t)] [162 (creator "trb@eastpac.com.au" create-time "20010428:22:21:46" no-fill t)] [158 (creator "trb@eastpac.com.au" create-time "20010428:22:19:56" no-fill t)] [160 (creator "trb@eastpac.com.au" create-time "20010428:22:21:06" no-fill t)] [161 (creator "trb@eastpac.com.au" create-time "20010428:22:21:19" no-fill t)] [159 (creator "trb@eastpac.com.au" create-time "20010428:22:20:58" no-fill t)] [184 (creator "trb@eastpac.com.au" create-time "20010502:13:46:41" no-fill t)] [197 (creator "trb@eastpac.com.au" create-time "20010516:13:40:00" no-fill t)] [206 (creator "trb@eastpac.com.au" create-time "20010524:18:27:57" no-fill t)] [207 (creator "trb@eastpac.com.au" create-time "20010524:18:32:52" no-fill t)] [208 (creator "trb@eastpac.com.au" create-time "20010524:18:33:03" no-fill t)] [243 (creator "trb@eastpac.com.au" create-time "20010526:15:27:18" no-fill t)] [211 (creator "trb@eastpac.com.au" create-time "20010524:18:34:07" no-fill t)] [212 (creator "trb@eastpac.com.au" create-time "20010524:18:34:23" no-fill t)] [213 (creator "trb@eastpac.com.au" create-time "20010524:18:34:51" no-fill t)] [214 (creator "trb@eastpac.com.au" create-time "20010524:18:38:09" no-fill t)] [215 (creator "trb@eastpac.com.au" create-time "20010524:18:38:19" no-fill t)] [191 (creator "trb@eastpac.com.au" create-time "20010516:01:30:10" no-fill t)] [192 (creator "trb@eastpac.com.au" create-time "20010516:01:32:52" no-fill t)] [195 (creator "trb@eastpac.com.au" create-time "20010516:12:58:38" no-fill t)] [199 (creator "trb@eastpac.com.au" create-time "20010516:13:42:39" no-fill t)] [198 (creator "trb@eastpac.com.au" create-time "20010516:13:42:29" no-fill t)] [200 (creator "trb@eastpac.com.au" create-time "20010516:13:43:20" no-fill t)] [194 (creator "trb@eastpac.com.au" create-time "20010516:01:38:20" no-fill t)] [202 (creator "trb@eastpac.com.au" create-time "20010516:17:09:47" no-fill t)] [204 (creator "trb@eastpac.com.au" create-time "20010516:17:14:59" no-fill t)] [203 (creator "trb@eastpac.com.au" create-time "20010516:17:10:49" no-fill t)] [185 (creator "trb@eastpac.com.au" create-time "20010502:16:00:24" no-fill t)] [187 (creator "trb@eastpac.com.au" create-time "20010502:16:04:48" no-fill t)] [188 (creator "trb@eastpac.com.au" create-time "20010502:16:28:22" no-fill t)] [189 (creator "trb@eastpac.com.au" create-time "20010502:16:34:44" no-fill t)] [186 (creator "trb@eastpac.com.au" create-time "20010502:16:01:27" no-fill t)] [125 (creator "trb@eastpac.com.au" create-time "20010422:14:39:08")] [107 (creator "trb@eastpac.com.au" create-time "20010422:14:26:39" no-fill t)] [201 (creator "trb@eastpac.com.au" create-time "20010516:13:51:16" no-fill t)] [109 (creator "trb@eastpac.com.au" create-time "20010422:14:27:47" no-fill t)] [111 (creator "trb@eastpac.com.au" create-time "20010422:14:28:27" no-fill t)] [113 (creator "trb@eastpac.com.au" create-time "20010422:14:29:10" no-fill t)] [126 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [127 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [128 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [129 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [130 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [131 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [132 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [133 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [135 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [136 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [137 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [138 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] [139 (creator "trb@eastpac.com.au" create-time "20010425:18:46:38")] nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]