extent_info
struct btrfs_replace_extent_info *extent_info,
if (extent_info->disk_offset == 0 &&
key.offset = extent_info->file_offset;
write_extent_buffer(leaf, extent_info->extent_buf,
btrfs_set_file_extent_offset(leaf, extent, extent_info->data_offset);
if (extent_info->is_new_extent)
ret = btrfs_inode_set_file_extent_range(inode, extent_info->file_offset,
if (extent_info->disk_offset == 0) {
if (extent_info->is_new_extent && extent_info->insertions == 0) {
key.objectid = extent_info->disk_offset;
key.offset = extent_info->disk_len;
extent_info->file_offset,
extent_info->qgroup_reserved,
.bytenr = extent_info->disk_offset,
.num_bytes = extent_info->disk_len,
ref_offset = extent_info->file_offset - extent_info->data_offset;
extent_info->insertions++;
struct btrfs_replace_extent_info *extent_info,
if (!btrfs_fs_incompat(fs_info, NO_HOLES) || extent_info)
if (!extent_info)
(extent_info && extent_info->is_new_extent))))
if (!extent_info && cur_offset < drop_args.drop_end &&
} else if (!extent_info && cur_offset < drop_args.drop_end) {
if (extent_info &&
drop_args.drop_end > extent_info->file_offset) {
extent_info->file_offset;
extent_info, replace_len,
extent_info->data_len -= replace_len;
extent_info->data_offset += replace_len;
extent_info->file_offset += replace_len;
if (!extent_info || extent_info->update_times)
if (!extent_info && len) {
if (extent_info && !extent_info->is_new_extent)
if (!extent_info && cur_offset < ino_size &&
} else if (!extent_info && cur_offset < drop_args.drop_end) {
if (extent_info) {
extent_info, extent_info->data_len,
struct btrfs_replace_extent_info *extent_info,
struct btrfs_replace_extent_info extent_info;
extent_info.disk_offset = start;
extent_info.disk_len = len;
extent_info.data_offset = 0;
extent_info.data_len = len;
extent_info.file_offset = file_offset;
extent_info.extent_buf = (char *)&stack_fi;
extent_info.is_new_extent = true;
extent_info.update_times = true;
extent_info.qgroup_reserved = qgroup_released;
extent_info.insertions = 0;
file_offset + len - 1, &extent_info,
struct extent_info ei = {};
struct extent_info ei;
struct extent_info ei = {};
struct extent_info *ei)
struct extent_info ei = {};
struct extent_info ei = {
struct extent_info *ei)
struct extent_info ei = {
static bool __is_extent_mergeable(struct extent_info *back,
struct extent_info *front, enum extent_type type)
static bool __is_back_mergeable(struct extent_info *cur,
struct extent_info *back, enum extent_type type)
static bool __is_front_mergeable(struct extent_info *cur,
struct extent_info *front, enum extent_type type)
struct extent_info ei;
struct extent_tree *et, struct extent_info *ei,
struct extent_info ei = {0};
struct extent_info *ei, enum extent_type type)
struct extent_tree *et, struct extent_info *ei,
struct extent_tree *et, struct extent_info *ei,
struct extent_info *tei, enum extent_type type)
struct extent_info ei, dei, prev;
static void __set_extent_info(struct extent_info *ei,
struct extent_info ei;
static int __get_new_block_age(struct inode *inode, struct extent_info *ei,
struct extent_info tei = *ei; /* only fofs and len are valid */
struct extent_info ei = {};
static inline void get_read_extent_info(struct extent_info *ext,
static inline void set_raw_read_extent(struct extent_info *ext,
struct extent_info *ei);
struct extent_info *ei);
struct extent_info ei; /* extent info */
struct extent_info largest; /* largest cached extent for EX_READ */
struct extent_info ei = {};
struct extent_info ei = et->largest;
struct extent_info ei = {};
struct extent_info *ei),
struct extent_info *ei),
struct extent_info;