Don't terminate a verbose message with a newline, it's not needed.
The live systems allocation/discard extent lists are potentially quite large,
don't free them while holding the system locked, there's no point to calling
free that many times inside the lock.
Set the checkpoint size before calling the checkpoint update function,
doesn't change anything but simplifies the code path.
Add some diagnostic code to confirm the checkpoint array looks like we
expect it to look.
Add another case, it's possible to delete fake checkpoints.