btrfs: move eb offset helpers into extent_io.h
These are very specific to how the extent buffer is defined, so this differs between btrfs-progs and the kernel. Make things easier by moving these helpers into extent_io.h so we don't have to worry about this when syncing ctree.h. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
6bfd0ffa6f
commit
9b48addac4
@@ -686,39 +686,6 @@ static inline int btrfs_next_item(struct btrfs_root *root, struct btrfs_path *p)
|
|||||||
}
|
}
|
||||||
int btrfs_leaf_free_space(struct extent_buffer *leaf);
|
int btrfs_leaf_free_space(struct extent_buffer *leaf);
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the correct offset inside the page of extent buffer.
|
|
||||||
*
|
|
||||||
* @eb: target extent buffer
|
|
||||||
* @start: offset inside the extent buffer
|
|
||||||
*
|
|
||||||
* Will handle both sectorsize == PAGE_SIZE and sectorsize < PAGE_SIZE cases.
|
|
||||||
*/
|
|
||||||
static inline size_t get_eb_offset_in_page(const struct extent_buffer *eb,
|
|
||||||
unsigned long offset)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* For sectorsize == PAGE_SIZE case, eb->start will always be aligned
|
|
||||||
* to PAGE_SIZE, thus adding it won't cause any difference.
|
|
||||||
*
|
|
||||||
* For sectorsize < PAGE_SIZE, we must only read the data that belongs
|
|
||||||
* to the eb, thus we have to take the eb->start into consideration.
|
|
||||||
*/
|
|
||||||
return offset_in_page(offset + eb->start);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned long get_eb_page_index(unsigned long offset)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* For sectorsize == PAGE_SIZE case, plain >> PAGE_SHIFT is enough.
|
|
||||||
*
|
|
||||||
* For sectorsize < PAGE_SIZE case, we only support 64K PAGE_SIZE,
|
|
||||||
* and have ensured that all tree blocks are contained in one page,
|
|
||||||
* thus we always get index == 0.
|
|
||||||
*/
|
|
||||||
return offset >> PAGE_SHIFT;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int is_fstree(u64 rootid)
|
static inline int is_fstree(u64 rootid)
|
||||||
{
|
{
|
||||||
if (rootid == BTRFS_FS_TREE_OBJECTID ||
|
if (rootid == BTRFS_FS_TREE_OBJECTID ||
|
||||||
|
@@ -95,6 +95,39 @@ struct extent_buffer {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the correct offset inside the page of extent buffer.
|
||||||
|
*
|
||||||
|
* @eb: target extent buffer
|
||||||
|
* @start: offset inside the extent buffer
|
||||||
|
*
|
||||||
|
* Will handle both sectorsize == PAGE_SIZE and sectorsize < PAGE_SIZE cases.
|
||||||
|
*/
|
||||||
|
static inline size_t get_eb_offset_in_page(const struct extent_buffer *eb,
|
||||||
|
unsigned long offset)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* For sectorsize == PAGE_SIZE case, eb->start will always be aligned
|
||||||
|
* to PAGE_SIZE, thus adding it won't cause any difference.
|
||||||
|
*
|
||||||
|
* For sectorsize < PAGE_SIZE, we must only read the data that belongs
|
||||||
|
* to the eb, thus we have to take the eb->start into consideration.
|
||||||
|
*/
|
||||||
|
return offset_in_page(offset + eb->start);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long get_eb_page_index(unsigned long offset)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* For sectorsize == PAGE_SIZE case, plain >> PAGE_SHIFT is enough.
|
||||||
|
*
|
||||||
|
* For sectorsize < PAGE_SIZE case, we only support 64K PAGE_SIZE,
|
||||||
|
* and have ensured that all tree blocks are contained in one page,
|
||||||
|
* thus we always get index == 0.
|
||||||
|
*/
|
||||||
|
return offset >> PAGE_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Structure to record how many bytes and which ranges are set/cleared
|
* Structure to record how many bytes and which ranges are set/cleared
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user