Everyone, I've merged into master the newlock branch, which contained the discussed changes to the nmh locking code.
Specifically, nmh now supports what I'm calling "transaction" locks, locks which can persist between function calls. This allows locks to maintain consistency during nmh operations. Also, read and write locks are used when appropriate (but it turns out this isn't a huge gain, since most programs end up holding a write lock). inc and pick now have some special logic in them so that they don't hold a lock while they're running, just when they update the sequence file (they reread the sequence file so no changes are lost). The lock algorithms selection now distinguishes between spool file locks and data locks; both locks are now run-time configurable (via mts.conf for the spool file and the profile for data locks). Unfortunately, the current code in nmh made it too difficult to support transaction locks on the context. This means that transaction locks won't be supported for private sequences. The context will still be locked during reads and writes and thus won't be corrupted, but it's possible that sequence entries could be lost. This problem existed before, so this isn't a regression. Maybe someday that could be fixed, but not today. --Ken _______________________________________________ Nmh-workers mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/nmh-workers
