Lines Matching defs:extent

26 #include "extent-tree.h"
126 * extent tree an 4x-6x higher write load than ext3.
135 * subvolume tree. Any file data extents found are recorded in the extent
289 /* should we free the extent on disk when done? This is used
612 /* replays a single extent in 'eb' at 'slot' with 'key' into the
616 * extents in the log tree have not been allocated out of the extent
618 * as required if the extent already exists or creating a new extent
619 * if it isn't in the extent allocation tree yet.
621 * The extent is inserted into the file, dropping any existing extents
672 * first check to see if we already have this extent in the
674 * so we don't try to drop this extent.
697 * we already have a pointer to this exact extent,
740 * Manually record dirty extent, as here we did a shallow
741 * file extent item copy and skip normal backref update,
742 * but modifying extent tree all by ourselves.
743 * So need to manually record dirty extent for qgroup,
744 * as the owner of the file extent changed from log tree
760 * is this extent already allocated in the extent
779 * insert the extent pointer in the extent
808 * extent that is completely referenced by one file
809 * extent item and partially referenced by another
810 * file extent item (like after using the clone or
813 * extent first, and we do not do the csum deletion
816 * the two following file extent items:
819 * extent data disk byte 12845056 nr 102400
820 * extent data offset 20480 nr 20480 ram 102400
823 * extent data disk byte 12845056 nr 102400
824 * extent data offset 0 nr 102400 ram 102400
826 * Where the second one fully references the 100K extent
829 * of the extent:
833 * After the first file extent item is replayed, the
839 * of our extent. Now when we replay the second file
840 * extent item, if we do not delete existing csum items
849 * extent starting at an offset of 40K or higher, will
852 * at offset 40K or higher of our extent.
2544 * Correctly adjust the reserved bytes occupied by a log tree extent buffer
2932 * commit, writes a dirty extent in this tree-log commit. This
3187 * extent buffer of the tree, due to a previous writeback
3194 * Some extent buffers of the log tree may still be dirty
4158 * for ordered extent completion, which is where we update nbytes, it
4160 * file extent items and replay them, we adjust the nbytes field of the
4239 * file which happens to refer to the same extent as well. Such races
4247 * Due to extent cloning, we might have logged a csum item that covers a
4248 * subrange of a cloned extent, and later we can end up logging a csum
4249 * item for a larger subrange of the same extent or the entire range.
4273 struct btrfs_file_extent_item *extent;
4292 * 1) Modifying the log tree triggers an extent buffer allocation while
4293 * holding a write lock on a parent extent buffer from the log tree.
4294 * Allocating the pages for an extent buffer, or the extent buffer
4299 * 2) Allocating a metadata extent for a log tree can trigger the async
4303 * lock delayed node mutexes and in the need to write lock extent
4305 * on the parent extent buffer in the log tree.
4352 extent = btrfs_item_ptr(src, src_slot,
4355 is_old_extent = (btrfs_file_extent_generation(src, extent) <
4363 * get leaves full of extent items, most of which are from past
4366 * as in that case it might have had file extent items with old
4380 if (btrfs_file_extent_type(src, extent) != BTRFS_FILE_EXTENT_REG)
4384 * If it's an extent created in a past transaction, then its
4391 disk_bytenr = btrfs_file_extent_disk_bytenr(src, extent);
4396 disk_num_bytes = btrfs_file_extent_disk_num_bytes(src, extent);
4398 if (btrfs_file_extent_compression(src, extent)) {
4402 extent_offset = btrfs_file_extent_offset(src, extent);
4403 extent_num_bytes = btrfs_file_extent_num_bytes(src, extent);
4431 * We have a leaf full of old extent items that don't need to be logged,
4451 * correspond to old file extent items.
4461 extent = btrfs_item_ptr(src, src_slot,
4465 if (btrfs_file_extent_generation(src, extent) < trans->transid &&
4548 * We are going to copy all the csums on this ordered extent, so
4550 * extent has already been logged.
4558 * |--------- logged extent ---------|
4559 * |----- ordered extent ----|
4576 * extent that falls inside of the logged extent.
4601 /* block start is already adjusted for the file extent offset. */
4666 * for extent buffers at levels 2, 1 and 0. This not only wastes time
4706 * subvolume's root instead of iterating the inode's extent map tree because
4707 * otherwise we can log incorrect extent items based on extent map conversion.
4708 * That can happen due to the fact that extent maps are merged when they
4709 * are not in the extent map tree's list of modified extents.
4739 * We must check if there is a prealloc extent that starts before the
4741 * truncate down to the end of that extent and not to the i_size, as
4742 * otherwise we end up losing part of the prealloc extent after a log
4743 * replay and with an implicit hole if there is another prealloc extent
4805 * Avoid logging extent items logged in past fsync calls
5057 * deletion of entire leafs or all the extent items of the first leaf (the one
5060 * current transaction that have extent items for our inode. So we need to find
5123 * an extent item and we are holding the inode lock, the
6419 * inline extent, otherwise we could end up with an empty symlink after
6423 * the inline extent when the symlink is created (we never have delalloc
6472 * we get a 8Kb file, with the last 4Kb extent as a hole