Lines Matching refs:em

477  * Return valid em if we find a file extent matching the requirement.
488 struct extent_map *em;
493 em = alloc_extent_map();
494 if (!em) {
566 em->start = start;
567 em->orig_start = start;
568 em->block_start = EXTENT_MAP_HOLE;
569 em->len = key.offset - start;
586 /* Now this extent covers @start, convert it to em */
587 btrfs_extent_item_to_extent_map(inode, &path, fi, em);
597 return em;
601 free_extent_map(em);
606 free_extent_map(em);
615 struct extent_map *em;
623 em = lookup_extent_mapping(em_tree, start, sectorsize);
628 * tree to get the original em for defrag.
630 * If @newer_than is 0 or em::generation < newer_than, we can trust
631 * this em, as either we don't care about the generation, or the
634 if (em && test_bit(EXTENT_FLAG_MERGED, &em->flags) &&
635 newer_than && em->generation >= newer_than) {
636 free_extent_map(em);
637 em = NULL;
640 if (!em) {
647 em = defrag_get_extent(BTRFS_I(inode), start, newer_than);
651 if (IS_ERR(em))
655 return em;
659 const struct extent_map *em)
661 if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
666 static bool defrag_check_next_extent(struct inode *inode, struct extent_map *em,
674 if (em->start + em->len >= i_size_read(inode))
683 next = defrag_lookup_extent(inode, em->start + em->len, newer_than, locked);
684 /* No more em or hole */
693 if (next->len >= get_extent_max_capacity(fs_info, em))
835 struct extent_map *em;
841 em = defrag_lookup_extent(&inode->vfs_inode, cur, newer_than, locked);
842 if (!em)
851 if (em->block_start == EXTENT_MAP_INLINE &&
852 em->len <= inode->root->fs_info->max_inline)
856 if (em->block_start == EXTENT_MAP_HOLE ||
857 em->block_start == EXTENT_MAP_DELALLOC ||
858 test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
862 if (em->generation < newer_than)
865 /* This em is under writeback, no need to defrag */
866 if (em->generation == (u64)-1)
873 range_len = em->len - (cur - em->start);
906 if (em->len >= extent_thresh)
913 if (em->len >= get_extent_max_capacity(fs_info, em))
922 if (em->block_start == EXTENT_MAP_INLINE)
925 next_mergeable = defrag_check_next_extent(&inode->vfs_inode, em,
944 range_len = min(extent_map_end(em), start + len) - cur;
966 free_extent_map(em);
975 cur = extent_map_end(em);
976 free_extent_map(em);