int ntfs_truncate (struct inode * vi);
We do not support i_size changes yet.
The kernel guarantees that vi is a regular file (S_ISREG is true) and that the change is allowed.
This implies for us that vi is a file inode rather than a directory, index, or attribute inode as well as that vi is a base inode.
Returns 0 on success or -errno on error.
Called with ->i_sem held. In all but one case ->i_alloc_sem is held for writing. The only case where ->i_alloc_sem is not held is mm/filemap.c::generic_file_buffered_write where vmtruncate is called with the current i_size as the offset which means that it is a noop as far as ntfs_truncate is concerned.