|
@@ -1264,21 +1264,11 @@ do_indirects:
|
|
|
|
|
|
static void ext2_truncate_blocks(struct inode *inode, loff_t offset)
|
|
static void ext2_truncate_blocks(struct inode *inode, loff_t offset)
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- * XXX: it seems like a bug here that we don't allow
|
|
|
|
- * IS_APPEND inode to have blocks-past-i_size trimmed off.
|
|
|
|
- * review and fix this.
|
|
|
|
- *
|
|
|
|
- * Also would be nice to be able to handle IO errors and such,
|
|
|
|
- * but that's probably too much to ask.
|
|
|
|
- */
|
|
|
|
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
|
|
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
|
|
S_ISLNK(inode->i_mode)))
|
|
S_ISLNK(inode->i_mode)))
|
|
return;
|
|
return;
|
|
if (ext2_inode_is_fast_symlink(inode))
|
|
if (ext2_inode_is_fast_symlink(inode))
|
|
return;
|
|
return;
|
|
- if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
|
|
|
|
- return;
|
|
|
|
|
|
|
|
dax_sem_down_write(EXT2_I(inode));
|
|
dax_sem_down_write(EXT2_I(inode));
|
|
__ext2_truncate_blocks(inode, offset);
|
|
__ext2_truncate_blocks(inode, offset);
|