On Sat, May 20, 2017 at 11:23:03PM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > ext2fs_inode_data_blocks2() calculates an inode's data block count by > subtracting the external xattr block, if any, from the total blocks. > But on bigalloc filesystems, the xattr "block" is actually a whole > cluster, so ext2fs_inode_data_blocks2() would return a too-large value. > > It seems this could have caused several different problems, but the one > I encountered was that xfstest generic/399 failed in the "bigalloc" > config because e2fsck incorrectly considered a symlink on the filesystem > to be corrupted at the end of the test. This happened because e2fsck > incorrectly calculated a nonzero data block count for a "fast" symlink > with an external xattr block and therefore treated it as a "slow" > symlink, which failed validation. > > Fix this by updating ext2fs_inode_data_blocks2() to subtract the cluster > size rather than the block size. > > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> Thanks, applied. - Ted