ext4: fix bigalloc regression
PATCH 1/1 ext4: fix bigalloc regression
Commit f5a44db5d2 introduced a regression on filesystems created with the bigalloc feature (cluster size > blocksize). It causes xfstests generic/006 and /013 to fail with an unexpected JBD2 failure and transaction abort that leaves the test file system in a read only state. Other xfstests run on bigalloc file systems are likely to fail as well.
The cause is the accidental use of a cluster mask where a cluster offset was needed in ext4_ext_map_blocks().
--- fs/ext4/extents.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/ext4/extents.c +1 -1
@@ -4218,7 +4218,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,*/ map->m_flags &= ~EXT4_MAP_FROM_CLUSTER ; newex.ee_block =cpu_to_le32 (map->m_lblk); - cluster_offset =EXT4_LBLK_CMASK (sbi, map->m_lblk); + cluster_offset =EXT4_LBLK_COFF (sbi, map->m_lblk);/* * If we are doing bigalloc, check to see if the extent returned
Signature · 1 line
1.8.3.2
Quoted 10 lines · Eric Whitney
Commit
f5a44db5d2introduced a regression on filesystems created with the bigalloc feature (cluster size > blocksize). It causes xfstests generic/006 and /013 to fail with an unexpected JBD2 failure and transaction abort that leaves the test file system in a read only state. Other xfstests run on bigalloc file systems are likely to fail as well.The cause is the accidental use of a cluster mask where a cluster offset was needed in
ext4_ext_map_blocks().Signed-off-by Eric Whitney <[email protected]>
Thanks, applied.
- Ted