Loading fs/ntfs/file.c +13 −3 Original line number Diff line number Diff line Loading @@ -1762,6 +1762,16 @@ static int ntfs_commit_pages_after_write(struct page **pages, return err; } static void ntfs_write_failed(struct address_space *mapping, loff_t to) { struct inode *inode = mapping->host; if (to > inode->i_size) { truncate_pagecache(inode, to, inode->i_size); ntfs_truncate_vfs(inode); } } /** * ntfs_file_buffered_write - * Loading Loading @@ -2022,8 +2032,9 @@ static ssize_t ntfs_file_buffered_write(struct kiocb *iocb, * allocated space, which is not a disaster. */ i_size = i_size_read(vi); if (pos + bytes > i_size) vmtruncate(vi, i_size); if (pos + bytes > i_size) { ntfs_write_failed(mapping, pos + bytes); } break; } } Loading Loading @@ -2227,7 +2238,6 @@ const struct file_operations ntfs_file_ops = { const struct inode_operations ntfs_file_inode_ops = { #ifdef NTFS_RW .truncate = ntfs_truncate_vfs, .setattr = ntfs_setattr, #endif /* NTFS_RW */ }; Loading fs/ntfs/inode.c +6 −2 Original line number Diff line number Diff line Loading @@ -2866,9 +2866,11 @@ int ntfs_truncate(struct inode *vi) * * See ntfs_truncate() description above for details. */ #ifdef NTFS_RW void ntfs_truncate_vfs(struct inode *vi) { ntfs_truncate(vi); } #endif /** * ntfs_setattr - called from notify_change() when an attribute is being changed Loading Loading @@ -2914,8 +2916,10 @@ int ntfs_setattr(struct dentry *dentry, struct iattr *attr) NInoCompressed(ni) ? "compressed" : "encrypted"); err = -EOPNOTSUPP; } else err = vmtruncate(vi, attr->ia_size); } else { truncate_setsize(vi, attr->ia_size); ntfs_truncate_vfs(vi); } if (err || ia_valid == ATTR_SIZE) goto out; } else { Loading fs/ntfs/inode.h +4 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,10 @@ static inline void ntfs_commit_inode(struct inode *vi) return; } #else static inline void ntfs_truncate_vfs(struct inode *vi) {} #endif /* NTFS_RW */ #endif /* _LINUX_NTFS_INODE_H */ Loading
fs/ntfs/file.c +13 −3 Original line number Diff line number Diff line Loading @@ -1762,6 +1762,16 @@ static int ntfs_commit_pages_after_write(struct page **pages, return err; } static void ntfs_write_failed(struct address_space *mapping, loff_t to) { struct inode *inode = mapping->host; if (to > inode->i_size) { truncate_pagecache(inode, to, inode->i_size); ntfs_truncate_vfs(inode); } } /** * ntfs_file_buffered_write - * Loading Loading @@ -2022,8 +2032,9 @@ static ssize_t ntfs_file_buffered_write(struct kiocb *iocb, * allocated space, which is not a disaster. */ i_size = i_size_read(vi); if (pos + bytes > i_size) vmtruncate(vi, i_size); if (pos + bytes > i_size) { ntfs_write_failed(mapping, pos + bytes); } break; } } Loading Loading @@ -2227,7 +2238,6 @@ const struct file_operations ntfs_file_ops = { const struct inode_operations ntfs_file_inode_ops = { #ifdef NTFS_RW .truncate = ntfs_truncate_vfs, .setattr = ntfs_setattr, #endif /* NTFS_RW */ }; Loading
fs/ntfs/inode.c +6 −2 Original line number Diff line number Diff line Loading @@ -2866,9 +2866,11 @@ int ntfs_truncate(struct inode *vi) * * See ntfs_truncate() description above for details. */ #ifdef NTFS_RW void ntfs_truncate_vfs(struct inode *vi) { ntfs_truncate(vi); } #endif /** * ntfs_setattr - called from notify_change() when an attribute is being changed Loading Loading @@ -2914,8 +2916,10 @@ int ntfs_setattr(struct dentry *dentry, struct iattr *attr) NInoCompressed(ni) ? "compressed" : "encrypted"); err = -EOPNOTSUPP; } else err = vmtruncate(vi, attr->ia_size); } else { truncate_setsize(vi, attr->ia_size); ntfs_truncate_vfs(vi); } if (err || ia_valid == ATTR_SIZE) goto out; } else { Loading
fs/ntfs/inode.h +4 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,10 @@ static inline void ntfs_commit_inode(struct inode *vi) return; } #else static inline void ntfs_truncate_vfs(struct inode *vi) {} #endif /* NTFS_RW */ #endif /* _LINUX_NTFS_INODE_H */