On Fri, Aug 01, 2014 at 11:12:47AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > If an inode fails checksum verification, don't stuff a copy of it in > the inode cache, because this can cause the library to fail to return > the "corrupt inode" error code. > > In general, this happens if ext2fs_read_inode_full() is called twice > on an inode with an incorrect checksum. If fs->flags has > EXT2_FLAG_IGNORE_CSUM_ERRORS set during the first call and *unset* > during the second call, the cache hit during the second call fails to > return EXT2_ET_INODE_CSUM_INVALID as you'd expect. This happens > during fsck because the first read_inode call happens as part of > check_blocks and the second call happens during inode checksum > revalidation. A file system with a slightly corrupt non-extent inode > will trigger this. > > While we're at it, make the inode read function consistent with the > rest of libext2fs -- copy the metadata object into the caller's buffer > even if it fails checksum verification. This will help e2fsck avoid a > double re-read later on down the line. > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Applied, thanks. - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html