Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 128517
b: refs/heads/master
c: 689f934
h: refs/heads/master
i:
  128515: ca92f36
v: v3
  • Loading branch information
Yan authored and Chris Mason committed Sep 25, 2008
1 parent 46c506b commit 9008764
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c67cda1758130f3e437744c4c2ec4a7cc25564e3
refs/heads/master: 689f9346612d96ab93890160cf2fe0df5217ab73
34 changes: 18 additions & 16 deletions trunk/fs/btrfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1596,8 +1596,7 @@ struct extent_map *btrfs_get_extent(struct inode *inode, struct page *page,

size = btrfs_file_extent_inline_len(leaf, btrfs_item_nr(leaf,
path->slots[0]));

extent_end = (extent_start + size) |
extent_end = (extent_start + size - 1) |
((u64)root->sectorsize - 1);
if (start < extent_start || start >= extent_end) {
em->start = start;
Expand All @@ -1610,29 +1609,32 @@ struct extent_map *btrfs_get_extent(struct inode *inode, struct page *page,
}
goto not_found_em;
}
em->block_start = EXTENT_MAP_INLINE;
em->block_end = EXTENT_MAP_INLINE;

if (!page) {
em->start = extent_start;
em->end = extent_start + size - 1;
goto out;
}

extent_offset = (page->index << PAGE_CACHE_SHIFT) -
extent_start;
ptr = btrfs_file_extent_inline_start(item) + extent_offset;
map = kmap(page);
extent_start + page_offset;
copy_size = min_t(u64, PAGE_CACHE_SIZE - page_offset,
size - extent_offset);

em->block_start = EXTENT_MAP_INLINE;
em->block_end = EXTENT_MAP_INLINE;
em->start = extent_start + extent_offset;
em->end = (em->start + copy_size -1) |
((u64)root->sectorsize -1);

if (!page) {
goto insert;
map = kmap(page);
ptr = btrfs_file_extent_inline_start(item) + extent_offset;
read_extent_buffer(leaf, map + page_offset, ptr, copy_size);

if (em->start + copy_size <= em->end) {
size = min_t(u64, em->end + 1 - em->start,
PAGE_CACHE_SIZE - page_offset) - copy_size;
memset(map + page_offset + copy_size, 0, size);
}

read_extent_buffer(leaf, map + page_offset, ptr, copy_size);
/*
memset(map + page_offset + copy_size, 0,
PAGE_CACHE_SIZE - copy_size - page_offset);
*/
flush_dcache_page(page);
kunmap(page);
set_extent_uptodate(em_tree, em->start, em->end, GFP_NOFS);
Expand Down

0 comments on commit 9008764

Please sign in to comment.