server: vfs: do checkpoints only if necessary

Normally a new revision of a file is created each time close is called.
This is not always necessary (e.g. on truncate) and just creates useless
overhead.