| From d0abafac8c9162f39c4f6b2f8141b772a09b3770 Mon Sep 17 00:00:00 2001 |
| From: Eric Whitney <enwlinux@gmail.com> |
| Date: Mon, 6 Jan 2014 14:00:23 -0500 |
| Subject: ext4: fix bigalloc regression |
| |
| From: Eric Whitney <enwlinux@gmail.com> |
| |
| commit d0abafac8c9162f39c4f6b2f8141b772a09b3770 upstream. |
| |
| 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(). |
| |
| Signed-off-by: Eric Whitney <enwlinux@gmail.com> |
| Cc: Theodore Ts'o <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ext4/extents.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/ext4/extents.c |
| +++ b/fs/ext4/extents.c |
| @@ -4249,7 +4249,7 @@ int ext4_ext_map_blocks(handle_t *handle |
| */ |
| 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 |