Lines Matching refs:es

187 		struct extent_status *es;  in ext4_es_print_tree()  local
188 es = rb_entry(node, struct extent_status, rb_node); in ext4_es_print_tree()
190 es->es_lblk, es->es_len, in ext4_es_print_tree()
191 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_print_tree()
200 static inline ext4_lblk_t ext4_es_end(struct extent_status *es) in ext4_es_end() argument
202 BUG_ON(es->es_lblk + es->es_len < es->es_lblk); in ext4_es_end()
203 return es->es_lblk + es->es_len - 1; in ext4_es_end()
214 struct extent_status *es = NULL; in __es_tree_search() local
217 es = rb_entry(node, struct extent_status, rb_node); in __es_tree_search()
218 if (lblk < es->es_lblk) in __es_tree_search()
220 else if (lblk > ext4_es_end(es)) in __es_tree_search()
223 return es; in __es_tree_search()
226 if (es && lblk < es->es_lblk) in __es_tree_search()
227 return es; in __es_tree_search()
229 if (es && lblk > ext4_es_end(es)) { in __es_tree_search()
230 node = rb_next(&es->rb_node); in __es_tree_search()
257 int (*matching_fn)(struct extent_status *es), in __es_find_extent_range() argument
259 struct extent_status *es) in __es_find_extent_range()
265 WARN_ON(es == NULL); in __es_find_extent_range()
271 es->es_lblk = es->es_len = es->es_pblk = 0; in __es_find_extent_range()
299 es->es_lblk = es1->es_lblk; in __es_find_extent_range()
300 es->es_len = es1->es_len; in __es_find_extent_range()
301 es->es_pblk = es1->es_pblk; in __es_find_extent_range()
310 int (*matching_fn)(struct extent_status *es), in ext4_es_find_extent_range() argument
312 struct extent_status *es) in ext4_es_find_extent_range()
320 __es_find_extent_range(inode, matching_fn, lblk, end, es); in ext4_es_find_extent_range()
323 trace_ext4_es_find_extent_range_exit(inode, es); in ext4_es_find_extent_range()
342 int (*matching_fn)(struct extent_status *es), in __es_scan_range() argument
345 struct extent_status es; in __es_scan_range() local
347 __es_find_extent_range(inode, matching_fn, start, end, &es); in __es_scan_range()
348 if (es.es_len == 0) in __es_scan_range()
350 else if (es.es_lblk <= start && in __es_scan_range()
351 start < es.es_lblk + es.es_len) in __es_scan_range()
353 else if (start <= es.es_lblk && es.es_lblk <= end) in __es_scan_range()
362 int (*matching_fn)(struct extent_status *es), in ext4_es_scan_range() argument
392 int (*matching_fn)(struct extent_status *es), in __es_scan_clu() argument
408 int (*matching_fn)(struct extent_status *es), in ext4_es_scan_clu() argument
457 struct extent_status *es; in ext4_es_alloc_extent() local
458 es = kmem_cache_alloc(ext4_es_cachep, GFP_ATOMIC); in ext4_es_alloc_extent()
459 if (es == NULL) in ext4_es_alloc_extent()
461 es->es_lblk = lblk; in ext4_es_alloc_extent()
462 es->es_len = len; in ext4_es_alloc_extent()
463 es->es_pblk = pblk; in ext4_es_alloc_extent()
468 if (!ext4_es_is_delayed(es)) { in ext4_es_alloc_extent()
478 return es; in ext4_es_alloc_extent()
481 static void ext4_es_free_extent(struct inode *inode, struct extent_status *es) in ext4_es_free_extent() argument
487 if (!ext4_es_is_delayed(es)) { in ext4_es_free_extent()
495 kmem_cache_free(ext4_es_cachep, es); in ext4_es_free_extent()
538 ext4_es_try_to_merge_left(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_left() argument
544 node = rb_prev(&es->rb_node); in ext4_es_try_to_merge_left()
546 return es; in ext4_es_try_to_merge_left()
549 if (ext4_es_can_be_merged(es1, es)) { in ext4_es_try_to_merge_left()
550 es1->es_len += es->es_len; in ext4_es_try_to_merge_left()
551 if (ext4_es_is_referenced(es)) in ext4_es_try_to_merge_left()
553 rb_erase(&es->rb_node, &tree->root); in ext4_es_try_to_merge_left()
554 ext4_es_free_extent(inode, es); in ext4_es_try_to_merge_left()
555 es = es1; in ext4_es_try_to_merge_left()
558 return es; in ext4_es_try_to_merge_left()
562 ext4_es_try_to_merge_right(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_right() argument
568 node = rb_next(&es->rb_node); in ext4_es_try_to_merge_right()
570 return es; in ext4_es_try_to_merge_right()
573 if (ext4_es_can_be_merged(es, es1)) { in ext4_es_try_to_merge_right()
574 es->es_len += es1->es_len; in ext4_es_try_to_merge_right()
576 ext4_es_set_referenced(es); in ext4_es_try_to_merge_right()
581 return es; in ext4_es_try_to_merge_right()
588 struct extent_status *es) in ext4_es_insert_extent_ext_check() argument
597 path = ext4_find_extent(inode, es->es_lblk, NULL, EXT4_EX_NOCACHE); in ext4_es_insert_extent_ext_check()
611 es_status = ext4_es_is_unwritten(es) ? 1 : 0; in ext4_es_insert_extent_ext_check()
617 if (!ext4_es_is_written(es) && !ext4_es_is_unwritten(es)) { in ext4_es_insert_extent_ext_check()
618 if (in_range(es->es_lblk, ee_block, ee_len)) { in ext4_es_insert_extent_ext_check()
626 es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
627 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ext_check()
636 if (es->es_lblk < ee_block || in ext4_es_insert_extent_ext_check()
637 ext4_es_pblock(es) != ee_start + es->es_lblk - ee_block) { in ext4_es_insert_extent_ext_check()
642 ee_status ? 'u' : 'w', es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
643 ext4_es_pblock(es), es_status ? 'u' : 'w'); in ext4_es_insert_extent_ext_check()
652 ee_status ? 'u' : 'w', es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
653 ext4_es_pblock(es), es_status ? 'u' : 'w'); in ext4_es_insert_extent_ext_check()
660 if (!ext4_es_is_delayed(es) && !ext4_es_is_hole(es)) { in ext4_es_insert_extent_ext_check()
665 es->es_lblk, es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
666 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ext_check()
674 struct extent_status *es) in ext4_es_insert_extent_ind_check() argument
686 map.m_lblk = es->es_lblk; in ext4_es_insert_extent_ind_check()
687 map.m_len = es->es_len; in ext4_es_insert_extent_ind_check()
691 if (ext4_es_is_delayed(es) || ext4_es_is_hole(es)) { in ext4_es_insert_extent_ind_check()
699 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
700 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ind_check()
702 } else if (ext4_es_is_written(es)) { in ext4_es_insert_extent_ind_check()
703 if (retval != es->es_len) { in ext4_es_insert_extent_ind_check()
706 inode->i_ino, retval, es->es_len); in ext4_es_insert_extent_ind_check()
709 if (map.m_pblk != ext4_es_pblock(es)) { in ext4_es_insert_extent_ind_check()
714 ext4_es_pblock(es)); in ext4_es_insert_extent_ind_check()
725 if (ext4_es_is_written(es)) { in ext4_es_insert_extent_ind_check()
729 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
730 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ind_check()
737 struct extent_status *es) in ext4_es_insert_extent_check() argument
745 ext4_es_insert_extent_ext_check(inode, es); in ext4_es_insert_extent_check()
747 ext4_es_insert_extent_ind_check(inode, es); in ext4_es_insert_extent_check()
751 struct extent_status *es) in ext4_es_insert_extent_check() argument
761 struct extent_status *es; in __es_insert_extent() local
765 es = rb_entry(parent, struct extent_status, rb_node); in __es_insert_extent()
767 if (newes->es_lblk < es->es_lblk) { in __es_insert_extent()
768 if (ext4_es_can_be_merged(newes, es)) { in __es_insert_extent()
773 es->es_lblk = newes->es_lblk; in __es_insert_extent()
774 es->es_len += newes->es_len; in __es_insert_extent()
775 if (ext4_es_is_written(es) || in __es_insert_extent()
776 ext4_es_is_unwritten(es)) in __es_insert_extent()
777 ext4_es_store_pblock(es, in __es_insert_extent()
779 es = ext4_es_try_to_merge_left(inode, es); in __es_insert_extent()
783 } else if (newes->es_lblk > ext4_es_end(es)) { in __es_insert_extent()
784 if (ext4_es_can_be_merged(es, newes)) { in __es_insert_extent()
785 es->es_len += newes->es_len; in __es_insert_extent()
786 es = ext4_es_try_to_merge_right(inode, es); in __es_insert_extent()
796 es = ext4_es_alloc_extent(inode, newes->es_lblk, newes->es_len, in __es_insert_extent()
798 if (!es) in __es_insert_extent()
800 rb_link_node(&es->rb_node, parent, p); in __es_insert_extent()
801 rb_insert_color(&es->rb_node, &tree->root); in __es_insert_extent()
804 tree->cache_es = es; in __es_insert_extent()
883 struct extent_status *es; in ext4_es_cache_extent() local
902 es = __es_tree_search(&EXT4_I(inode)->i_es_tree.root, lblk); in ext4_es_cache_extent()
903 if (!es || es->es_lblk > end) in ext4_es_cache_extent()
917 struct extent_status *es) in ext4_es_lookup_extent() argument
935 es->es_lblk = es->es_len = es->es_pblk = 0; in ext4_es_lookup_extent()
963 es->es_lblk = es1->es_lblk; in ext4_es_lookup_extent()
964 es->es_len = es1->es_len; in ext4_es_lookup_extent()
965 es->es_pblk = es1->es_pblk; in ext4_es_lookup_extent()
984 trace_ext4_es_lookup_extent_exit(inode, es, found); in ext4_es_lookup_extent()
1010 struct extent_status *es, struct rsvd_count *rc) in init_rsvd() argument
1025 if (lblk > es->es_lblk) { in init_rsvd()
1026 rc->left_es = es; in init_rsvd()
1028 node = rb_prev(&es->rb_node); in init_rsvd()
1052 struct extent_status *es, struct rsvd_count *rc) in count_rsvd() argument
1057 if (!ext4_es_is_delonly(es)) in count_rsvd()
1069 i = (lblk < es->es_lblk) ? es->es_lblk : lblk; in count_rsvd()
1071 end = (end > ext4_es_end(es)) ? ext4_es_end(es) : end; in count_rsvd()
1184 struct extent_status *es; in get_rsvd() local
1204 es = rc->left_es; in get_rsvd()
1205 while (es && ext4_es_end(es) >= in get_rsvd()
1207 if (ext4_es_is_delonly(es)) { in get_rsvd()
1212 node = rb_prev(&es->rb_node); in get_rsvd()
1215 es = rb_entry(node, struct extent_status, rb_node); in get_rsvd()
1219 es = right_es; in get_rsvd()
1222 es = node ? rb_entry(node, struct extent_status, in get_rsvd()
1225 while (es && es->es_lblk <= in get_rsvd()
1227 if (ext4_es_is_delonly(es)) { in get_rsvd()
1232 node = rb_next(&es->rb_node); in get_rsvd()
1235 es = rb_entry(node, struct extent_status, in get_rsvd()
1307 struct extent_status *es; in __es_remove_extent() local
1320 es = __es_tree_search(&tree->root, lblk); in __es_remove_extent()
1321 if (!es) in __es_remove_extent()
1323 if (es->es_lblk > end) in __es_remove_extent()
1329 init_rsvd(inode, lblk, es, &rc); in __es_remove_extent()
1331 orig_es.es_lblk = es->es_lblk; in __es_remove_extent()
1332 orig_es.es_len = es->es_len; in __es_remove_extent()
1333 orig_es.es_pblk = es->es_pblk; in __es_remove_extent()
1335 len1 = lblk > es->es_lblk ? lblk - es->es_lblk : 0; in __es_remove_extent()
1336 len2 = ext4_es_end(es) > end ? ext4_es_end(es) - end : 0; in __es_remove_extent()
1338 es->es_len = len1; in __es_remove_extent()
1354 es->es_lblk = orig_es.es_lblk; in __es_remove_extent()
1355 es->es_len = orig_es.es_len; in __es_remove_extent()
1363 es->es_lblk = end + 1; in __es_remove_extent()
1364 es->es_len = len2; in __es_remove_extent()
1365 if (ext4_es_is_written(es) || in __es_remove_extent()
1366 ext4_es_is_unwritten(es)) { in __es_remove_extent()
1368 ext4_es_store_pblock(es, block); in __es_remove_extent()
1381 node = rb_next(&es->rb_node); in __es_remove_extent()
1383 es = rb_entry(node, struct extent_status, rb_node); in __es_remove_extent()
1385 es = NULL; in __es_remove_extent()
1388 while (es && ext4_es_end(es) <= end) { in __es_remove_extent()
1390 count_rsvd(inode, es->es_lblk, es->es_len, es, &rc); in __es_remove_extent()
1391 node = rb_next(&es->rb_node); in __es_remove_extent()
1392 rb_erase(&es->rb_node, &tree->root); in __es_remove_extent()
1393 ext4_es_free_extent(inode, es); in __es_remove_extent()
1395 es = NULL; in __es_remove_extent()
1398 es = rb_entry(node, struct extent_status, rb_node); in __es_remove_extent()
1401 if (es && es->es_lblk < end + 1) { in __es_remove_extent()
1402 ext4_lblk_t orig_len = es->es_len; in __es_remove_extent()
1404 len1 = ext4_es_end(es) - end; in __es_remove_extent()
1406 count_rsvd(inode, es->es_lblk, orig_len - len1, in __es_remove_extent()
1407 es, &rc); in __es_remove_extent()
1408 es->es_lblk = end + 1; in __es_remove_extent()
1409 es->es_len = len1; in __es_remove_extent()
1410 if (ext4_es_is_written(es) || ext4_es_is_unwritten(es)) { in __es_remove_extent()
1411 block = es->es_pblk + orig_len - len1; in __es_remove_extent()
1412 ext4_es_store_pblock(es, block); in __es_remove_extent()
1417 *reserved = get_rsvd(inode, end, es, &rc); in __es_remove_extent()
1695 struct extent_status *es; in es_do_reclaim_extents() local
1698 es = __es_tree_search(&tree->root, ei->i_es_shrink_lblk); in es_do_reclaim_extents()
1699 if (!es) in es_do_reclaim_extents()
1703 if (es->es_lblk > end) { in es_do_reclaim_extents()
1709 node = rb_next(&es->rb_node); in es_do_reclaim_extents()
1714 if (ext4_es_is_delayed(es)) in es_do_reclaim_extents()
1716 if (ext4_es_is_referenced(es)) { in es_do_reclaim_extents()
1717 ext4_es_clear_referenced(es); in es_do_reclaim_extents()
1721 rb_erase(&es->rb_node, &tree->root); in es_do_reclaim_extents()
1722 ext4_es_free_extent(inode, es); in es_do_reclaim_extents()
1727 es = rb_entry(node, struct extent_status, rb_node); in es_do_reclaim_extents()
1729 ei->i_es_shrink_lblk = es->es_lblk; in es_do_reclaim_extents()
1767 struct extent_status *es; in ext4_clear_inode_es() local
1776 es = rb_entry(node, struct extent_status, rb_node); in ext4_clear_inode_es()
1778 if (!ext4_es_is_delayed(es)) { in ext4_clear_inode_es()
1779 rb_erase(&es->rb_node, &tree->root); in ext4_clear_inode_es()
1780 ext4_es_free_extent(inode, es); in ext4_clear_inode_es()
2046 struct extent_status *es; in __es_delayed_clu() local
2056 es = __es_tree_search(&tree->root, start); in __es_delayed_clu()
2058 while (es && (es->es_lblk <= end)) { in __es_delayed_clu()
2059 if (ext4_es_is_delonly(es)) { in __es_delayed_clu()
2060 if (es->es_lblk <= start) in __es_delayed_clu()
2063 first_lclu = EXT4_B2C(sbi, es->es_lblk); in __es_delayed_clu()
2065 if (ext4_es_end(es) >= end) in __es_delayed_clu()
2068 last_lclu = EXT4_B2C(sbi, ext4_es_end(es)); in __es_delayed_clu()
2076 node = rb_next(&es->rb_node); in __es_delayed_clu()
2079 es = rb_entry(node, struct extent_status, rb_node); in __es_delayed_clu()