ext4: use EXT_MAX_BLOCKS in ext4_es_can_be_merged()
In ext4_es_can_be_merged() when checking whether we can merge two extents we should use EXT_MAX_BLOCKS instead of defining it manually. Also if it is really the case we should notify userspace because clearly there is a bug in extent status tree implementation since this should never happen. Signed-off-by: Lukas Czerner <lczerner@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
This commit is contained in:
parent
5d60125530
commit
0baaea6400
|
@ -344,8 +344,14 @@ static int ext4_es_can_be_merged(struct extent_status *es1,
|
|||
if (ext4_es_status(es1) != ext4_es_status(es2))
|
||||
return 0;
|
||||
|
||||
if (((__u64) es1->es_len) + es2->es_len > 0xFFFFFFFFULL)
|
||||
if (((__u64) es1->es_len) + es2->es_len > EXT_MAX_BLOCKS) {
|
||||
pr_warn("ES assertion failed when merging extents. "
|
||||
"The sum of lengths of es1 (%d) and es2 (%d) "
|
||||
"is bigger than allowed file size (%d)\n",
|
||||
es1->es_len, es2->es_len, EXT_MAX_BLOCKS);
|
||||
WARN_ON(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (((__u64) es1->es_lblk) + es1->es_len != es2->es_lblk)
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue