From: Simon Ruderich Date: Sun, 15 Dec 2019 07:48:09 +0000 (+0100) Subject: Add TODO.adoc X-Git-Tag: 0.1~16 X-Git-Url: https://ruderich.org/simon/gitweb/?p=nsscash%2Fnsscash.git;a=commitdiff_plain;h=566dce4a9832074468b2782a2f88eda373ca5f4f Add TODO.adoc --- diff --git a/README.adoc b/README.adoc index d2578ae..d18434f 100644 --- a/README.adoc +++ b/README.adoc @@ -45,7 +45,8 @@ The passwd/group files have the following size restrictions: violated nsscash has an extensive test suite for both the Go and C part testing general -requirements and various corner cases. +requirements and various corner cases. See TODO.adoc for a list of known +issues and possible improvements. nsscash is licensed under AGPL version 3 or later. diff --git a/TODO.adoc b/TODO.adoc new file mode 100644 index 0000000..d1d7d20 --- /dev/null +++ b/TODO.adoc @@ -0,0 +1,21 @@ += TODOs + +- Currently, all files are fetched first and then updated one-by-one. This + protects against partial updates if the server has issues, but won't help if + the disk is full. In that case it's possible that only passwd is updated but + then group cannot be written and now the system uses an inconsistent state. + To prevent this, write to temporary files for all files first and then + rename them all in one step. + + However, most of the time passwd and group are not directly linked in a way + that an inconsistent state will create problematic issues. + +- Implement a push mechanism to reduce the traffic generated by regular runs + of `nsscash fetch` (e.g. via cron). + + However, for most setups even minutely updates won't generate any noticeable + traffic due to `If-Modified-Since`. + +- Implement an improved file format for passwd/group nsscash to perform even + faster lookups. At the moment `mmap(2)` is the bottleneck. However, + switching to `read(2)` is problematic with a large number of users. A new + format using a B-tree like structure could use `read(2)` and thus improve + the performance, at the cost of increased complexity.