Lines Matching refs:es
184 struct extent_status *es; in ext4_es_print_tree() local
185 es = rb_entry(node, struct extent_status, rb_node); in ext4_es_print_tree()
187 es->es_lblk, es->es_len, in ext4_es_print_tree()
188 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_print_tree()
197 static inline ext4_lblk_t ext4_es_end(struct extent_status *es) in ext4_es_end() argument
199 BUG_ON(es->es_lblk + es->es_len < es->es_lblk); in ext4_es_end()
200 return es->es_lblk + es->es_len - 1; in ext4_es_end()
211 struct extent_status *es = NULL; in __es_tree_search() local
214 es = rb_entry(node, struct extent_status, rb_node); in __es_tree_search()
215 if (lblk < es->es_lblk) in __es_tree_search()
217 else if (lblk > ext4_es_end(es)) in __es_tree_search()
220 return es; in __es_tree_search()
223 if (es && lblk < es->es_lblk) in __es_tree_search()
224 return es; in __es_tree_search()
226 if (es && lblk > ext4_es_end(es)) { in __es_tree_search()
227 node = rb_next(&es->rb_node); in __es_tree_search()
246 struct extent_status *es) in ext4_es_find_delayed_extent_range() argument
252 BUG_ON(es == NULL); in ext4_es_find_delayed_extent_range()
260 es->es_lblk = es->es_len = es->es_pblk = 0; in ext4_es_find_delayed_extent_range()
288 es->es_lblk = es1->es_lblk; in ext4_es_find_delayed_extent_range()
289 es->es_len = es1->es_len; in ext4_es_find_delayed_extent_range()
290 es->es_pblk = es1->es_pblk; in ext4_es_find_delayed_extent_range()
295 trace_ext4_es_find_delayed_extent_range_exit(inode, es); in ext4_es_find_delayed_extent_range()
332 struct extent_status *es; in ext4_es_alloc_extent() local
333 es = kmem_cache_alloc(ext4_es_cachep, GFP_ATOMIC); in ext4_es_alloc_extent()
334 if (es == NULL) in ext4_es_alloc_extent()
336 es->es_lblk = lblk; in ext4_es_alloc_extent()
337 es->es_len = len; in ext4_es_alloc_extent()
338 es->es_pblk = pblk; in ext4_es_alloc_extent()
343 if (!ext4_es_is_delayed(es)) { in ext4_es_alloc_extent()
353 return es; in ext4_es_alloc_extent()
356 static void ext4_es_free_extent(struct inode *inode, struct extent_status *es) in ext4_es_free_extent() argument
362 if (!ext4_es_is_delayed(es)) { in ext4_es_free_extent()
370 kmem_cache_free(ext4_es_cachep, es); in ext4_es_free_extent()
413 ext4_es_try_to_merge_left(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_left() argument
419 node = rb_prev(&es->rb_node); in ext4_es_try_to_merge_left()
421 return es; in ext4_es_try_to_merge_left()
424 if (ext4_es_can_be_merged(es1, es)) { in ext4_es_try_to_merge_left()
425 es1->es_len += es->es_len; in ext4_es_try_to_merge_left()
426 if (ext4_es_is_referenced(es)) in ext4_es_try_to_merge_left()
428 rb_erase(&es->rb_node, &tree->root); in ext4_es_try_to_merge_left()
429 ext4_es_free_extent(inode, es); in ext4_es_try_to_merge_left()
430 es = es1; in ext4_es_try_to_merge_left()
433 return es; in ext4_es_try_to_merge_left()
437 ext4_es_try_to_merge_right(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_right() argument
443 node = rb_next(&es->rb_node); in ext4_es_try_to_merge_right()
445 return es; in ext4_es_try_to_merge_right()
448 if (ext4_es_can_be_merged(es, es1)) { in ext4_es_try_to_merge_right()
449 es->es_len += es1->es_len; in ext4_es_try_to_merge_right()
451 ext4_es_set_referenced(es); in ext4_es_try_to_merge_right()
456 return es; in ext4_es_try_to_merge_right()
463 struct extent_status *es) in ext4_es_insert_extent_ext_check() argument
472 path = ext4_find_extent(inode, es->es_lblk, NULL, EXT4_EX_NOCACHE); in ext4_es_insert_extent_ext_check()
486 es_status = ext4_es_is_unwritten(es) ? 1 : 0; in ext4_es_insert_extent_ext_check()
492 if (!ext4_es_is_written(es) && !ext4_es_is_unwritten(es)) { in ext4_es_insert_extent_ext_check()
493 if (in_range(es->es_lblk, ee_block, ee_len)) { in ext4_es_insert_extent_ext_check()
501 es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
502 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ext_check()
511 if (es->es_lblk < ee_block || in ext4_es_insert_extent_ext_check()
512 ext4_es_pblock(es) != ee_start + es->es_lblk - ee_block) { in ext4_es_insert_extent_ext_check()
517 ee_status ? 'u' : 'w', es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
518 ext4_es_pblock(es), es_status ? 'u' : 'w'); in ext4_es_insert_extent_ext_check()
527 ee_status ? 'u' : 'w', es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
528 ext4_es_pblock(es), es_status ? 'u' : 'w'); in ext4_es_insert_extent_ext_check()
535 if (!ext4_es_is_delayed(es) && !ext4_es_is_hole(es)) { in ext4_es_insert_extent_ext_check()
540 es->es_lblk, es->es_lblk, es->es_len, in ext4_es_insert_extent_ext_check()
541 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ext_check()
550 struct extent_status *es) in ext4_es_insert_extent_ind_check() argument
562 map.m_lblk = es->es_lblk; in ext4_es_insert_extent_ind_check()
563 map.m_len = es->es_len; in ext4_es_insert_extent_ind_check()
567 if (ext4_es_is_delayed(es) || ext4_es_is_hole(es)) { in ext4_es_insert_extent_ind_check()
575 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
576 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ind_check()
578 } else if (ext4_es_is_written(es)) { in ext4_es_insert_extent_ind_check()
579 if (retval != es->es_len) { in ext4_es_insert_extent_ind_check()
582 inode->i_ino, retval, es->es_len); in ext4_es_insert_extent_ind_check()
585 if (map.m_pblk != ext4_es_pblock(es)) { in ext4_es_insert_extent_ind_check()
590 ext4_es_pblock(es)); in ext4_es_insert_extent_ind_check()
601 if (ext4_es_is_written(es)) { in ext4_es_insert_extent_ind_check()
605 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
606 ext4_es_pblock(es), ext4_es_status(es)); in ext4_es_insert_extent_ind_check()
613 struct extent_status *es) in ext4_es_insert_extent_check() argument
621 ext4_es_insert_extent_ext_check(inode, es); in ext4_es_insert_extent_check()
623 ext4_es_insert_extent_ind_check(inode, es); in ext4_es_insert_extent_check()
627 struct extent_status *es) in ext4_es_insert_extent_check() argument
637 struct extent_status *es; in __es_insert_extent() local
641 es = rb_entry(parent, struct extent_status, rb_node); in __es_insert_extent()
643 if (newes->es_lblk < es->es_lblk) { in __es_insert_extent()
644 if (ext4_es_can_be_merged(newes, es)) { in __es_insert_extent()
649 es->es_lblk = newes->es_lblk; in __es_insert_extent()
650 es->es_len += newes->es_len; in __es_insert_extent()
651 if (ext4_es_is_written(es) || in __es_insert_extent()
652 ext4_es_is_unwritten(es)) in __es_insert_extent()
653 ext4_es_store_pblock(es, in __es_insert_extent()
655 es = ext4_es_try_to_merge_left(inode, es); in __es_insert_extent()
659 } else if (newes->es_lblk > ext4_es_end(es)) { in __es_insert_extent()
660 if (ext4_es_can_be_merged(es, newes)) { in __es_insert_extent()
661 es->es_len += newes->es_len; in __es_insert_extent()
662 es = ext4_es_try_to_merge_right(inode, es); in __es_insert_extent()
672 es = ext4_es_alloc_extent(inode, newes->es_lblk, newes->es_len, in __es_insert_extent()
674 if (!es) in __es_insert_extent()
676 rb_link_node(&es->rb_node, parent, p); in __es_insert_extent()
677 rb_insert_color(&es->rb_node, &tree->root); in __es_insert_extent()
680 tree->cache_es = es; in __es_insert_extent()
750 struct extent_status *es; in ext4_es_cache_extent() local
766 es = __es_tree_search(&EXT4_I(inode)->i_es_tree.root, lblk); in ext4_es_cache_extent()
767 if (!es || es->es_lblk > end) in ext4_es_cache_extent()
780 struct extent_status *es) in ext4_es_lookup_extent() argument
795 es->es_lblk = es->es_len = es->es_pblk = 0; in ext4_es_lookup_extent()
823 es->es_lblk = es1->es_lblk; in ext4_es_lookup_extent()
824 es->es_len = es1->es_len; in ext4_es_lookup_extent()
825 es->es_pblk = es1->es_pblk; in ext4_es_lookup_extent()
835 trace_ext4_es_lookup_extent_exit(inode, es, found); in ext4_es_lookup_extent()
844 struct extent_status *es; in __es_remove_extent() local
852 es = __es_tree_search(&tree->root, lblk); in __es_remove_extent()
853 if (!es) in __es_remove_extent()
855 if (es->es_lblk > end) in __es_remove_extent()
861 orig_es.es_lblk = es->es_lblk; in __es_remove_extent()
862 orig_es.es_len = es->es_len; in __es_remove_extent()
863 orig_es.es_pblk = es->es_pblk; in __es_remove_extent()
865 len1 = lblk > es->es_lblk ? lblk - es->es_lblk : 0; in __es_remove_extent()
866 len2 = ext4_es_end(es) > end ? ext4_es_end(es) - end : 0; in __es_remove_extent()
868 es->es_len = len1; in __es_remove_extent()
884 es->es_lblk = orig_es.es_lblk; in __es_remove_extent()
885 es->es_len = orig_es.es_len; in __es_remove_extent()
893 es->es_lblk = end + 1; in __es_remove_extent()
894 es->es_len = len2; in __es_remove_extent()
895 if (ext4_es_is_written(es) || in __es_remove_extent()
896 ext4_es_is_unwritten(es)) { in __es_remove_extent()
898 ext4_es_store_pblock(es, block); in __es_remove_extent()
905 node = rb_next(&es->rb_node); in __es_remove_extent()
907 es = rb_entry(node, struct extent_status, rb_node); in __es_remove_extent()
909 es = NULL; in __es_remove_extent()
912 while (es && ext4_es_end(es) <= end) { in __es_remove_extent()
913 node = rb_next(&es->rb_node); in __es_remove_extent()
914 rb_erase(&es->rb_node, &tree->root); in __es_remove_extent()
915 ext4_es_free_extent(inode, es); in __es_remove_extent()
917 es = NULL; in __es_remove_extent()
920 es = rb_entry(node, struct extent_status, rb_node); in __es_remove_extent()
923 if (es && es->es_lblk < end + 1) { in __es_remove_extent()
924 ext4_lblk_t orig_len = es->es_len; in __es_remove_extent()
926 len1 = ext4_es_end(es) - end; in __es_remove_extent()
927 es->es_lblk = end + 1; in __es_remove_extent()
928 es->es_len = len1; in __es_remove_extent()
929 if (ext4_es_is_written(es) || ext4_es_is_unwritten(es)) { in __es_remove_extent()
930 block = es->es_pblk + orig_len - len1; in __es_remove_extent()
931 ext4_es_store_pblock(es, block); in __es_remove_extent()
1192 struct extent_status *es; in es_do_reclaim_extents() local
1195 es = __es_tree_search(&tree->root, ei->i_es_shrink_lblk); in es_do_reclaim_extents()
1196 if (!es) in es_do_reclaim_extents()
1198 node = &es->rb_node; in es_do_reclaim_extents()
1200 if (es->es_lblk > end) { in es_do_reclaim_extents()
1206 node = rb_next(&es->rb_node); in es_do_reclaim_extents()
1211 if (ext4_es_is_delayed(es)) in es_do_reclaim_extents()
1213 if (ext4_es_is_referenced(es)) { in es_do_reclaim_extents()
1214 ext4_es_clear_referenced(es); in es_do_reclaim_extents()
1218 rb_erase(&es->rb_node, &tree->root); in es_do_reclaim_extents()
1219 ext4_es_free_extent(inode, es); in es_do_reclaim_extents()
1224 es = rb_entry(node, struct extent_status, rb_node); in es_do_reclaim_extents()
1226 ei->i_es_shrink_lblk = es->es_lblk; in es_do_reclaim_extents()