On Wed, 22 May 2019 at 10:36, Theodore Ts'o <tytso@xxxxxxx> wrote: > > On Tue, May 21, 2019 at 11:27:21PM +0530, Naresh Kamboju wrote: > > Steps to reproduce is, > > running LTP three test cases in sequence on x86 device. > > # cd ltp/runtest > > # cat syscalls ( only three test case) > > open12 open12 > > madvise06 madvise06 > > poll02 poll02 > > # > > > > as Dan referring to, > > > > LTP is run using '/opt/ltp/runltp -d /scratch -f syscalls', where the > > syscalls file has been replaced with three test case names, and > > /scratch is an ext4 SATA drive. /scratch is created using 'mkfs -t ext4 > > /dev/disk/by-id/ata-TOSHIBA_MG03ACA100_37O9KGKWF' and mounted to > > /scratch. > > I'm still having trouble reproducing the problem. I've followed the > above exactly, and it doesn't trigger on my system. I think I know > what is happening, but even given my theory, I'm still not able to > trigger it. So, I'm not 100% sure this is the appropriate fix. If > you can reproduce it, can you see if this patch, applied on top of the > Linus's tip, fixes the problem for you? Applied your patch on mainline master branch and tested on x86_64 and confirms that the reported problem fixed. Thanks for your fix patch. LTP syscalls full test output log, https://lkft.validation.linaro.org/scheduler/job/739075 --- Fixes: 345c0dbf3a30 ("ext4: protect journal inode's blocks using block_validity") Reported-by: Dan Rue <dan.rue@xxxxxxxxxx> Signed-off-by: Theodore Ts'o <tytso@xxxxxxx> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index f2c62e2a0c98..d40ed940001e 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -518,10 +518,14 @@ __read_extent_tree_block(const char *function, unsigned int line, } if (buffer_verified(bh) && !(flags & EXT4_EX_FORCE_CACHE)) return bh; - err = __ext4_ext_check(function, line, inode, - ext_block_hdr(bh), depth, pblk); - if (err) - goto errout; + if (!ext4_has_feature_journal(inode->i_sb) || + (inode->i_ino != + le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum))) { + err = __ext4_ext_check(function, line, inode, + ext_block_hdr(bh), depth, pblk); + if (err) + goto errout; + } set_buffer_verified(bh); /* * If this is a leaf block, cache all of its entries - Naresh