mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-01 11:54:10 +00:00
btrfs_get_extent should treat inline extents as though they hold a whole block
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
b3cfa35a49
commit
50b78c24d5
1 changed files with 7 additions and 5 deletions
|
@ -1505,13 +1505,13 @@ again:
|
||||||
|
|
||||||
size = btrfs_file_extent_inline_len(leaf->items +
|
size = btrfs_file_extent_inline_len(leaf->items +
|
||||||
path->slots[0]);
|
path->slots[0]);
|
||||||
extent_end = extent_start + size;
|
extent_end = extent_start | ((u64)root->blocksize - 1);
|
||||||
if (start < extent_start || start >= extent_end) {
|
if (start < extent_start || start >= extent_end) {
|
||||||
em->start = start;
|
em->start = start;
|
||||||
if (start < extent_start) {
|
if (start < extent_start) {
|
||||||
if (end < extent_start)
|
if (end < extent_start)
|
||||||
goto not_found;
|
goto not_found;
|
||||||
em->end = extent_end - 1;
|
em->end = extent_end;
|
||||||
} else {
|
} else {
|
||||||
em->end = end;
|
em->end = end;
|
||||||
}
|
}
|
||||||
|
@ -1520,17 +1520,19 @@ again:
|
||||||
em->block_start = EXTENT_MAP_INLINE;
|
em->block_start = EXTENT_MAP_INLINE;
|
||||||
em->block_end = EXTENT_MAP_INLINE;
|
em->block_end = EXTENT_MAP_INLINE;
|
||||||
em->start = extent_start;
|
em->start = extent_start;
|
||||||
em->end = extent_end - 1;
|
em->end = extent_end;
|
||||||
if (!page) {
|
if (!page) {
|
||||||
goto insert;
|
goto insert;
|
||||||
}
|
}
|
||||||
ptr = btrfs_file_extent_inline_start(item);
|
ptr = btrfs_file_extent_inline_start(item);
|
||||||
map = kmap(page);
|
map = kmap(page);
|
||||||
memcpy(map + page_offset, ptr, size);
|
memcpy(map + page_offset, ptr, size);
|
||||||
flush_dcache_page(result->b_page);
|
memset(map + page_offset + size, 0,
|
||||||
|
root->blocksize - (page_offset + size));
|
||||||
|
flush_dcache_page(page);
|
||||||
kunmap(page);
|
kunmap(page);
|
||||||
set_extent_uptodate(em_tree, extent_start,
|
set_extent_uptodate(em_tree, extent_start,
|
||||||
extent_end - 1, GFP_NOFS);
|
extent_end, GFP_NOFS);
|
||||||
goto insert;
|
goto insert;
|
||||||
} else {
|
} else {
|
||||||
printk("unkknown found_type %d\n", found_type);
|
printk("unkknown found_type %d\n", found_type);
|
||||||
|
|
Loading…
Add table
Reference in a new issue