SRU Justification: When truncating inodes in the lower filesystem, eCryptfs directly invoked vmtruncate(). As Christoph Hellwig pointed out, vmtruncate() is a filesystem helper function, but filesystems may need to do more than just a call to vmtruncate(). eCryptfs needs to go through notify_change()->setattr to ensure truncate works reliable without corruption or leaking blocks on a variety of filesystems.
See: http://thread.gmane.org/gmane.linux.file-systems/36105 Fix: With this patch , lower inode truncation is moved out of ecryptfs_truncate() and the function is renamed to truncate_upper(). truncate_upper() updates an iattr for the lower inode to indicate if the lower inode needs to be truncated upon return. ecryptfs_setattr() then calls notify_change(), using the updated iattr for the lower inode, to complete the truncation. Without the patch we risk corrupting or leaking blocks on the lower filesystem. Has been soak tested with a variety of ftruncate() soak tests and also running a full kernel build on ecryptfs with a lower ext4 filesystem. ** Also affects: linux (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/451368 Title: ecryptfs_truncate should not call vmtruncate on lower inode To manage notifications about this bug go to: https://bugs.launchpad.net/ecryptfs/+bug/451368/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs