Loading fs/btrfs/ctree.h +3 −8 Original line number Diff line number Diff line Loading @@ -557,14 +557,9 @@ static inline unsigned long btrfs_node_key_ptr_offset(int nr) sizeof(struct btrfs_key_ptr) * nr; } static inline void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { unsigned long ptr; ptr = btrfs_node_key_ptr_offset(nr); read_eb_member(eb, (struct btrfs_key_ptr *)ptr, struct btrfs_key_ptr, key, disk_key); } void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr); static inline void btrfs_set_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { Loading fs/btrfs/struct-funcs.c +16 −0 Original line number Diff line number Diff line Loading @@ -95,3 +95,19 @@ void btrfs_set_##name(struct extent_buffer *eb, \ #include "ctree.h" void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { unsigned long ptr = btrfs_node_key_ptr_offset(nr); if (eb->map_token && ptr >= eb->map_start && ptr + sizeof(*disk_key) <= eb->map_start + eb->map_len) { memcpy(disk_key, eb->kaddr + ptr - eb->map_start, sizeof(*disk_key)); return; } else if (eb->map_token) { unmap_extent_buffer(eb, eb->map_token, KM_USER1); eb->map_token = NULL; } read_eb_member(eb, (struct btrfs_key_ptr *)ptr, struct btrfs_key_ptr, key, disk_key); } Loading
fs/btrfs/ctree.h +3 −8 Original line number Diff line number Diff line Loading @@ -557,14 +557,9 @@ static inline unsigned long btrfs_node_key_ptr_offset(int nr) sizeof(struct btrfs_key_ptr) * nr; } static inline void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { unsigned long ptr; ptr = btrfs_node_key_ptr_offset(nr); read_eb_member(eb, (struct btrfs_key_ptr *)ptr, struct btrfs_key_ptr, key, disk_key); } void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr); static inline void btrfs_set_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { Loading
fs/btrfs/struct-funcs.c +16 −0 Original line number Diff line number Diff line Loading @@ -95,3 +95,19 @@ void btrfs_set_##name(struct extent_buffer *eb, \ #include "ctree.h" void btrfs_node_key(struct extent_buffer *eb, struct btrfs_disk_key *disk_key, int nr) { unsigned long ptr = btrfs_node_key_ptr_offset(nr); if (eb->map_token && ptr >= eb->map_start && ptr + sizeof(*disk_key) <= eb->map_start + eb->map_len) { memcpy(disk_key, eb->kaddr + ptr - eb->map_start, sizeof(*disk_key)); return; } else if (eb->map_token) { unmap_extent_buffer(eb, eb->map_token, KM_USER1); eb->map_token = NULL; } read_eb_member(eb, (struct btrfs_key_ptr *)ptr, struct btrfs_key_ptr, key, disk_key); }