Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 fixes from Ted Ts'o:
"Bug fixes (including a regression fix) for ext4"

* tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: fix dcache lookup of !casefolded directories
ext4: do not delete unlinked inode from orphan list on failed truncate
ext4: wait for outstanding dio during truncate in nojournal mode
ext4: don't perform block validity checks on the journal inode

+19 -18
+1 -1
fs/ext4/dir.c
··· 671 671 if (!IS_CASEFOLDED(dentry->d_parent->d_inode)) { 672 672 if (len != name->len) 673 673 return -1; 674 - return !memcmp(str, name, len); 674 + return memcmp(str, name->name, len); 675 675 } 676 676 677 677 return ext4_ci_compare(dentry->d_parent->d_inode, name, &qstr);
+8 -4
fs/ext4/extents.c
··· 518 518 } 519 519 if (buffer_verified(bh) && !(flags & EXT4_EX_FORCE_CACHE)) 520 520 return bh; 521 - err = __ext4_ext_check(function, line, inode, 522 - ext_block_hdr(bh), depth, pblk); 523 - if (err) 524 - goto errout; 521 + if (!ext4_has_feature_journal(inode->i_sb) || 522 + (inode->i_ino != 523 + le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum))) { 524 + err = __ext4_ext_check(function, line, inode, 525 + ext_block_hdr(bh), depth, pblk); 526 + if (err) 527 + goto errout; 528 + } 525 529 set_buffer_verified(bh); 526 530 /* 527 531 * If this is a leaf block, cache all of its entries
+10 -13
fs/ext4/inode.c
··· 5625 5625 up_write(&EXT4_I(inode)->i_data_sem); 5626 5626 ext4_journal_stop(handle); 5627 5627 if (error) { 5628 - if (orphan) 5628 + if (orphan && inode->i_nlink) 5629 5629 ext4_orphan_del(NULL, inode); 5630 5630 goto err_out; 5631 5631 } 5632 5632 } 5633 - if (!shrink) 5633 + if (!shrink) { 5634 5634 pagecache_isize_extended(inode, oldsize, inode->i_size); 5635 - 5636 - /* 5637 - * Blocks are going to be removed from the inode. Wait 5638 - * for dio in flight. Temporarily disable 5639 - * dioread_nolock to prevent livelock. 5640 - */ 5641 - if (orphan) { 5642 - if (!ext4_should_journal_data(inode)) { 5643 - inode_dio_wait(inode); 5644 - } else 5645 - ext4_wait_for_tail_page_commit(inode); 5635 + } else { 5636 + /* 5637 + * Blocks are going to be removed from the inode. Wait 5638 + * for dio in flight. 5639 + */ 5640 + inode_dio_wait(inode); 5646 5641 } 5642 + if (orphan && ext4_should_journal_data(inode)) 5643 + ext4_wait_for_tail_page_commit(inode); 5647 5644 down_write(&EXT4_I(inode)->i_mmap_sem); 5648 5645 5649 5646 rc = ext4_break_layouts(inode);