The exception

So those are the rules, and here is the exception: truncation. If a compressed file is opened with O_TRUNC from the regular virtual namespace, the file status will become just as if it were created from this namespace. This gives you full POSIX capabilities and no compression with accompanying restrictions.

By the way, the ftruncate() functionality isn't provided with compressed files, but is supported with regular files.