From: Andrew Morton Try to make that expression less mind-boggling. Cc: Cc: Duane Griffin Signed-off-by: Andrew Morton --- fs/ext3/inode.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff -puN fs/ext3/inode.c~ext3-handle-corrupted-orphan-list-at-mount-cleanup fs/ext3/inode.c --- a/fs/ext3/inode.c~ext3-handle-corrupted-orphan-list-at-mount-cleanup +++ a/fs/ext3/inode.c @@ -2258,10 +2258,16 @@ static void ext3_free_branches(handle_t int ext3_can_truncate(struct inode *inode) { - return (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || - S_ISLNK(inode->i_mode)) && - !ext3_inode_is_fast_symlink(inode) && - !(IS_APPEND(inode) || IS_IMMUTABLE(inode)); + if (S_ISREG(inode->i_mode)) + return 1; + if (S_ISDIR(inode->i_mode)) + return 1; + if (S_ISLNK(inode->i_mode)) { + if (!ext3_inode_is_fast_symlink(inode) && + !(IS_APPEND(inode) || IS_IMMUTABLE(inode))) + return 1; + } + return 0; } /* _