Lines Matching refs:offset
228 if (key.type > BTRFS_EXTENT_DATA_KEY || key.offset >= args->end) in btrfs_drop_extents()
240 extent_end = key.offset + in btrfs_drop_extents()
243 extent_end = key.offset + in btrfs_drop_extents()
259 if (extent_end == key.offset && extent_end >= search_start) { in btrfs_drop_extents()
270 search_start = max(key.offset, args->start); in btrfs_drop_extents()
281 if (args->start > key.offset && args->end < extent_end) { in btrfs_drop_extents()
293 new_key.offset = args->start; in btrfs_drop_extents()
307 args->start - key.offset); in btrfs_drop_extents()
312 extent_offset += args->start - key.offset; in btrfs_drop_extents()
335 key.offset = args->start; in btrfs_drop_extents()
347 if (args->start <= key.offset && args->end < extent_end) { in btrfs_drop_extents()
354 new_key.offset = args->end; in btrfs_drop_extents()
357 extent_offset += args->end - key.offset; in btrfs_drop_extents()
362 args->bytes_found += args->end - key.offset; in btrfs_drop_extents()
371 if (args->start > key.offset && args->end >= extent_end) { in btrfs_drop_extents()
383 args->start - key.offset); in btrfs_drop_extents()
397 if (args->start <= key.offset && args->end >= extent_end) { in btrfs_drop_extents()
413 args->bytes_found += extent_end - key.offset; in btrfs_drop_extents()
426 key.offset - extent_offset, in btrfs_drop_extents()
433 args->bytes_found += extent_end - key.offset; in btrfs_drop_extents()
487 key.offset = args->start; in btrfs_drop_extents()
527 btrfs_file_extent_offset(leaf, fi) != key.offset - orig_offset || in extent_mergeable()
533 extent_end = key.offset + btrfs_file_extent_num_bytes(leaf, fi); in extent_mergeable()
534 if ((*start && *start != key.offset) || (*end && *end != extent_end)) in extent_mergeable()
537 *start = key.offset; in extent_mergeable()
580 key.offset = split; in btrfs_mark_extent_written()
603 extent_end = key.offset + btrfs_file_extent_num_bytes(leaf, fi); in btrfs_mark_extent_written()
604 if (key.offset > start || extent_end < end) { in btrfs_mark_extent_written()
612 orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi); in btrfs_mark_extent_written()
615 if (start == key.offset && end < extent_end) { in btrfs_mark_extent_written()
621 new_key.offset = end; in btrfs_mark_extent_written()
641 if (start > key.offset && end == extent_end) { in btrfs_mark_extent_written()
650 start - key.offset); in btrfs_mark_extent_written()
654 new_key.offset = start; in btrfs_mark_extent_written()
669 while (start > key.offset || end < extent_end) { in btrfs_mark_extent_written()
670 if (key.offset == start) in btrfs_mark_extent_written()
673 new_key.offset = split; in btrfs_mark_extent_written()
689 split - key.offset); in btrfs_mark_extent_written()
713 key.offset = start; in btrfs_mark_extent_written()
715 if (start != key.offset) { in btrfs_mark_extent_written()
761 key.offset = other_start; in btrfs_mark_extent_written()
783 extent_end - key.offset); in btrfs_mark_extent_written()
2078 if (key.offset == end) in hole_mergeable()
2080 if (key.offset + btrfs_file_extent_num_bytes(leaf, fi) == start) in hole_mergeable()
2087 struct btrfs_path *path, u64 offset, u64 end) in fill_holes() argument
2102 key.offset = offset; in fill_holes()
2116 if (hole_mergeable(inode, leaf, path->slots[0] - 1, offset, end)) { in fill_holes()
2123 end - offset; in fill_holes()
2131 if (hole_mergeable(inode, leaf, path->slots[0], offset, end)) { in fill_holes()
2134 key.offset = offset; in fill_holes()
2139 offset; in fill_holes()
2148 ret = btrfs_insert_hole_extent(trans, root, btrfs_ino(inode), offset, in fill_holes()
2149 end - offset); in fill_holes()
2158 btrfs_drop_extent_map_range(inode, offset, end - 1, false); in fill_holes()
2161 hole_em->start = offset; in fill_holes()
2162 hole_em->len = end - offset; in fill_holes()
2325 key.offset = extent_info->file_offset; in btrfs_insert_replace_extent()
2359 key.offset = extent_info->disk_len; in btrfs_insert_replace_extent()
2649 static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len) in btrfs_punch_hole() argument
2661 const u64 orig_start = offset; in btrfs_punch_hole()
2662 const u64 orig_end = offset + len - 1; in btrfs_punch_hole()
2671 ret = btrfs_wait_ordered_range(BTRFS_I(inode), offset, len); in btrfs_punch_hole()
2676 ret = find_first_non_hole(BTRFS_I(inode), &offset, &len); in btrfs_punch_hole()
2689 lockstart = round_up(offset, fs_info->sectorsize); in btrfs_punch_hole()
2690 lockend = round_down(offset + len, fs_info->sectorsize) - 1; in btrfs_punch_hole()
2691 same_block = (BTRFS_BYTES_TO_BLKS(fs_info, offset)) in btrfs_punch_hole()
2692 == (BTRFS_BYTES_TO_BLKS(fs_info, offset + len - 1)); in btrfs_punch_hole()
2698 if (offset < ino_size) { in btrfs_punch_hole()
2700 ret = btrfs_truncate_block(BTRFS_I(inode), offset + len - 1, in btrfs_punch_hole()
2709 if (offset < ino_size) { in btrfs_punch_hole()
2711 ret = btrfs_truncate_block(BTRFS_I(inode), offset, orig_start, orig_end); in btrfs_punch_hole()
2722 if (offset == orig_start) { in btrfs_punch_hole()
2724 len = offset + len - lockstart; in btrfs_punch_hole()
2725 offset = lockstart; in btrfs_punch_hole()
2726 ret = find_first_non_hole(BTRFS_I(inode), &offset, &len); in btrfs_punch_hole()
2733 lockstart = offset; in btrfs_punch_hole()
2738 tail_len = offset + len - tail_start; in btrfs_punch_hole()
2884 u64 offset) in btrfs_zero_range_check_range_boundary() argument
2890 offset = round_down(offset, sectorsize); in btrfs_zero_range_check_range_boundary()
2891 em = btrfs_get_extent(inode, NULL, offset, sectorsize); in btrfs_zero_range_check_range_boundary()
2907 loff_t offset, in btrfs_zero_range() argument
2917 const u64 orig_start = offset; in btrfs_zero_range()
2918 const u64 orig_end = offset + len - 1; in btrfs_zero_range()
2919 u64 alloc_start = round_down(offset, sectorsize); in btrfs_zero_range()
2920 u64 alloc_end = round_up(offset + len, sectorsize); in btrfs_zero_range()
2942 if (em_end >= offset + len) { in btrfs_zero_range()
2949 ret = btrfs_fallocate_update_isize(inode, offset + len, in btrfs_zero_range()
2959 len = offset + len - alloc_start; in btrfs_zero_range()
2960 offset = alloc_start; in btrfs_zero_range()
2965 if (BTRFS_BYTES_TO_BLKS(fs_info, offset) == in btrfs_zero_range()
2966 BTRFS_BYTES_TO_BLKS(fs_info, offset + len - 1)) { in btrfs_zero_range()
2975 ret = btrfs_fallocate_update_isize(inode, offset + len, in btrfs_zero_range()
2981 ret = btrfs_truncate_block(BTRFS_I(inode), offset + len - 1, in btrfs_zero_range()
2985 offset + len, in btrfs_zero_range()
2990 alloc_start = round_down(offset, sectorsize); in btrfs_zero_range()
2995 alloc_start = round_up(offset, sectorsize); in btrfs_zero_range()
2996 alloc_end = round_down(offset + len, sectorsize); in btrfs_zero_range()
3004 if (!IS_ALIGNED(offset, sectorsize)) { in btrfs_zero_range()
3006 offset); in btrfs_zero_range()
3010 alloc_start = round_down(offset, sectorsize); in btrfs_zero_range()
3013 ret = btrfs_truncate_block(BTRFS_I(inode), offset, in btrfs_zero_range()
3022 if (!IS_ALIGNED(offset + len, sectorsize)) { in btrfs_zero_range()
3024 offset + len); in btrfs_zero_range()
3028 alloc_end = round_up(offset + len, sectorsize); in btrfs_zero_range()
3031 ret = btrfs_truncate_block(BTRFS_I(inode), offset + len - 1, in btrfs_zero_range()
3064 offset + len, &alloc_hint); in btrfs_zero_range()
3073 ret = btrfs_fallocate_update_isize(inode, offset + len, mode); in btrfs_zero_range()
3084 loff_t offset, loff_t len) in btrfs_fallocate() argument
3110 alloc_start = round_down(offset, blocksize); in btrfs_fallocate()
3111 alloc_end = round_up(offset + len, blocksize); in btrfs_fallocate()
3120 return btrfs_punch_hole(file, offset, len); in btrfs_fallocate()
3124 if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > inode->i_size) { in btrfs_fallocate()
3125 ret = inode_newsize_ok(inode, offset + len); in btrfs_fallocate()
3146 } else if (offset + len > inode->i_size) { in btrfs_fallocate()
3172 ret = btrfs_zero_range(inode, offset, len, mode); in btrfs_fallocate()
3192 actual_end = min_t(u64, btrfs_extent_map_end(em), offset + len); in btrfs_fallocate()
3237 offset + len, &alloc_hint); in btrfs_fallocate()
3516 static loff_t find_desired_extent(struct file *file, loff_t offset, int whence) in find_desired_extent() argument
3535 if (i_size == 0 || offset >= i_size) in find_desired_extent()
3595 start = max_t(loff_t, 0, offset); in find_desired_extent()
3610 key.offset = start; in find_desired_extent()
3657 if (last_extent_end < key.offset) { in find_desired_extent()
3665 if (start == offset) in find_desired_extent()
3666 search_start = offset; in find_desired_extent()
3671 key.offset - 1, in find_desired_extent()
3699 u64 search_start = key.offset; in find_desired_extent()
3706 if (start == offset) in find_desired_extent()
3707 search_start = offset; in find_desired_extent()
3730 start = max_t(u64, key.offset, offset); in find_desired_extent()
3772 static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int whence) in btrfs_file_llseek() argument
3778 return generic_file_llseek(file, offset, whence); in btrfs_file_llseek()
3782 offset = find_desired_extent(file, offset, whence); in btrfs_file_llseek()
3787 if (offset < 0) in btrfs_file_llseek()
3788 return offset; in btrfs_file_llseek()
3790 return vfs_setpos(file, offset, inode->i_sb->s_maxbytes); in btrfs_file_llseek()