Commit 44fb851d authored by Zheng Liu's avatar Zheng Liu Committed by Theodore Ts'o

ext4: add WARN_ON to check the length of allocated blocks

In commit 921f266b: ext4: add self-testing infrastructure to do a
sanity check, some sanity checks were added in map_blocks to make sure
'retval == map->m_len'.

Enable these checks by default and report any assertion failures using
ext4_warning() and WARN_ON() since they can help us to figure out some
bugs that are otherwise hard to hit.
Signed-off-by: default avatarZheng Liu <wenqing.lz@taobao.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 94eec0fc
...@@ -555,14 +555,13 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, ...@@ -555,14 +555,13 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
int ret; int ret;
unsigned long long status; unsigned long long status;
#ifdef ES_AGGRESSIVE_TEST if (unlikely(retval != map->m_len)) {
if (retval != map->m_len) { ext4_warning(inode->i_sb,
printk("ES len assertion failed for inode: %lu " "ES len assertion failed for inode "
"retval %d != map->m_len %d " "%lu: retval %d != map->m_len %d",
"in %s (lookup)\n", inode->i_ino, retval, inode->i_ino, retval, map->m_len);
map->m_len, __func__); WARN_ON(1);
} }
#endif
status = map->m_flags & EXT4_MAP_UNWRITTEN ? status = map->m_flags & EXT4_MAP_UNWRITTEN ?
EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN; EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN;
...@@ -656,14 +655,13 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, ...@@ -656,14 +655,13 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
int ret; int ret;
unsigned long long status; unsigned long long status;
#ifdef ES_AGGRESSIVE_TEST if (unlikely(retval != map->m_len)) {
if (retval != map->m_len) { ext4_warning(inode->i_sb,
printk("ES len assertion failed for inode: %lu " "ES len assertion failed for inode "
"retval %d != map->m_len %d " "%lu: retval %d != map->m_len %d",
"in %s (allocation)\n", inode->i_ino, retval, inode->i_ino, retval, map->m_len);
map->m_len, __func__); WARN_ON(1);
} }
#endif
/* /*
* If the extent has been zeroed out, we don't need to update * If the extent has been zeroed out, we don't need to update
...@@ -1637,14 +1635,13 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock, ...@@ -1637,14 +1635,13 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
int ret; int ret;
unsigned long long status; unsigned long long status;
#ifdef ES_AGGRESSIVE_TEST if (unlikely(retval != map->m_len)) {
if (retval != map->m_len) { ext4_warning(inode->i_sb,
printk("ES len assertion failed for inode: %lu " "ES len assertion failed for inode "
"retval %d != map->m_len %d " "%lu: retval %d != map->m_len %d",
"in %s (lookup)\n", inode->i_ino, retval, inode->i_ino, retval, map->m_len);
map->m_len, __func__); WARN_ON(1);
} }
#endif
status = map->m_flags & EXT4_MAP_UNWRITTEN ? status = map->m_flags & EXT4_MAP_UNWRITTEN ?
EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN; EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment