New zone API
Here's what I imagine:
- global singleton zonedb-like object
- two ways of getting the zone: read / write. Only one thread can write, this should be handled by zone serialization. User will get a handler a will only be able to modify/read the zone via the handler.
- merge zone_t and contents
- No RCU protecting zones anywhere except inside the zone API itself
- Journal operations handled by the API, together with changeset application.
- Only two operations for manipulating the actual data: Add RR/ Remove RR
- Adjusting on-the-fly (might not be possible)
- Semantic checks part of the API, also CNAME checks and co. with possibility to set fail/ignore.
- Sorted changesets, may be used for 'limbo' zone state (i.e. see modifications to zone you've just made)
- Possibility to mmap zones?
- Get rid of RCU (use trie + changesets for now, implement hazard pointers for cleanup)
Steps:
- Reuse RCU and old journal to create the API, the API should not change after this is done. Port the server code to this API
- Drop RCU
- Drop journal
- mmap
- ???
- PROFIT