Loading fs/ufs/inode.c +10 −5 Original line number Original line Diff line number Diff line Loading @@ -526,6 +526,14 @@ int ufs_prepare_chunk(struct page *page, loff_t pos, unsigned len) return __block_write_begin(page, pos, len, ufs_getfrag_block); return __block_write_begin(page, pos, len, ufs_getfrag_block); } } static void ufs_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); } static int ufs_write_begin(struct file *file, struct address_space *mapping, static int ufs_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata) struct page **pagep, void **fsdata) Loading @@ -534,11 +542,8 @@ static int ufs_write_begin(struct file *file, struct address_space *mapping, ret = block_write_begin(mapping, pos, len, flags, pagep, ret = block_write_begin(mapping, pos, len, flags, pagep, ufs_getfrag_block); ufs_getfrag_block); if (unlikely(ret)) { if (unlikely(ret)) loff_t isize = mapping->host->i_size; ufs_write_failed(mapping, pos + len); if (pos + len > isize) vmtruncate(mapping->host, isize); } return ret; return ret; } } Loading Loading
fs/ufs/inode.c +10 −5 Original line number Original line Diff line number Diff line Loading @@ -526,6 +526,14 @@ int ufs_prepare_chunk(struct page *page, loff_t pos, unsigned len) return __block_write_begin(page, pos, len, ufs_getfrag_block); return __block_write_begin(page, pos, len, ufs_getfrag_block); } } static void ufs_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); } static int ufs_write_begin(struct file *file, struct address_space *mapping, static int ufs_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata) struct page **pagep, void **fsdata) Loading @@ -534,11 +542,8 @@ static int ufs_write_begin(struct file *file, struct address_space *mapping, ret = block_write_begin(mapping, pos, len, flags, pagep, ret = block_write_begin(mapping, pos, len, flags, pagep, ufs_getfrag_block); ufs_getfrag_block); if (unlikely(ret)) { if (unlikely(ret)) loff_t isize = mapping->host->i_size; ufs_write_failed(mapping, pos + len); if (pos + len > isize) vmtruncate(mapping->host, isize); } return ret; return ret; } } Loading