Lines Matching full:ordered
57 "Inconsistency in ordered tree at offset %llu", offset); in ordered_data_tree_panic()
135 * look find the first ordered struct that has this offset, otherwise
168 * The tree is given a single reference on the ordered extent that was
270 * when an ordered extent is finished. If the list covers more than one
271 * ordered extent, it is split across multiples.
287 * of the file. The IO may span ordered extents. If
292 * to make sure this function only returns 1 once for a given ordered extent.
336 "bad ordered accounting left %llu size %llu", in btrfs_dec_test_first_ordered_pending()
361 * of the file. The IO should not span ordered extents. If
366 * to make sure this function only returns 1 once for a given ordered extent.
400 "bad ordered accounting left %llu size %llu", in btrfs_dec_test_ordered_pending()
424 * used to drop a reference on an ordered extent. This will free
452 * remove an ordered extent from the tree. No references are dropped
529 struct btrfs_ordered_extent *ordered; in btrfs_run_ordered_extent_work() local
531 ordered = container_of(work, struct btrfs_ordered_extent, flush_work); in btrfs_run_ordered_extent_work()
532 btrfs_start_ordered_extent(ordered->inode, ordered, 1); in btrfs_run_ordered_extent_work()
533 complete(&ordered->completion); in btrfs_run_ordered_extent_work()
537 * wait for all the ordered extents in a root. This is done when balancing
547 struct btrfs_ordered_extent *ordered, *next; in btrfs_wait_ordered_extents() local
555 ordered = list_first_entry(&splice, struct btrfs_ordered_extent, in btrfs_wait_ordered_extents()
558 if (range_end <= ordered->start || in btrfs_wait_ordered_extents()
559 ordered->start + ordered->disk_len <= range_start) { in btrfs_wait_ordered_extents()
560 list_move_tail(&ordered->root_extent_list, &skipped); in btrfs_wait_ordered_extents()
565 list_move_tail(&ordered->root_extent_list, in btrfs_wait_ordered_extents()
567 refcount_inc(&ordered->refs); in btrfs_wait_ordered_extents()
570 btrfs_init_work(&ordered->flush_work, in btrfs_wait_ordered_extents()
573 list_add_tail(&ordered->work_list, &works); in btrfs_wait_ordered_extents()
574 btrfs_queue_work(fs_info->flush_workers, &ordered->flush_work); in btrfs_wait_ordered_extents()
586 list_for_each_entry_safe(ordered, next, &works, work_list) { in btrfs_wait_ordered_extents()
587 list_del_init(&ordered->work_list); in btrfs_wait_ordered_extents()
588 wait_for_completion(&ordered->completion); in btrfs_wait_ordered_extents()
589 btrfs_put_ordered_extent(ordered); in btrfs_wait_ordered_extents()
637 * Used to start IO or wait for a given ordered extent to finish.
666 * Used to wait on ordered extents across a large range of bytes.
674 struct btrfs_ordered_extent *ordered; in btrfs_wait_ordered_range() local
693 * for any ordered extents that haven't completed yet. This is to make in btrfs_wait_ordered_range()
695 * before the ordered extents complete - to avoid failures (-EEXIST) in btrfs_wait_ordered_range()
696 * when adding the new ordered extents to the ordered tree. in btrfs_wait_ordered_range()
702 ordered = btrfs_lookup_first_ordered_extent(inode, end); in btrfs_wait_ordered_range()
703 if (!ordered) in btrfs_wait_ordered_range()
705 if (ordered->file_offset > orig_end) { in btrfs_wait_ordered_range()
706 btrfs_put_ordered_extent(ordered); in btrfs_wait_ordered_range()
709 if (ordered->file_offset + ordered->len <= start) { in btrfs_wait_ordered_range()
710 btrfs_put_ordered_extent(ordered); in btrfs_wait_ordered_range()
713 btrfs_start_ordered_extent(inode, ordered, 1); in btrfs_wait_ordered_range()
714 end = ordered->file_offset; in btrfs_wait_ordered_range()
716 * If the ordered extent had an error save the error but don't in btrfs_wait_ordered_range()
717 * exit without waiting first for all other ordered extents in in btrfs_wait_ordered_range()
720 if (test_bit(BTRFS_ORDERED_IOERR, &ordered->flags)) in btrfs_wait_ordered_range()
722 btrfs_put_ordered_extent(ordered); in btrfs_wait_ordered_range()
731 * find an ordered extent corresponding to file_offset. return NULL if
757 /* Since the DIO code tries to lock a wide area we need to look for any ordered
826 struct btrfs_ordered_extent *ordered) in btrfs_ordered_update_i_size() argument
839 if (ordered) { in btrfs_ordered_update_i_size()
840 offset = entry_end(ordered); in btrfs_ordered_update_i_size()
841 if (test_bit(BTRFS_ORDERED_TRUNCATED, &ordered->flags)) in btrfs_ordered_update_i_size()
843 ordered->file_offset + in btrfs_ordered_update_i_size()
844 ordered->truncated_len); in btrfs_ordered_update_i_size()
852 * If ordered is not NULL, then this is called from endio and in btrfs_ordered_update_i_size()
861 if (!ordered && disk_i_size > i_size) { in btrfs_ordered_update_i_size()
869 * this ordered extent is inside the disk i_size, we're done in btrfs_ordered_update_i_size()
879 (!ordered || ordered->outstanding_isize <= disk_i_size)) in btrfs_ordered_update_i_size()
883 * walk backward from this ordered extent to disk_i_size. in btrfs_ordered_update_i_size()
884 * if we find an ordered extent then we can't update disk i_size in btrfs_ordered_update_i_size()
887 if (ordered) { in btrfs_ordered_update_i_size()
888 node = rb_prev(&ordered->rb_node); in btrfs_ordered_update_i_size()
892 * we insert file extents without involving ordered struct, in btrfs_ordered_update_i_size()
893 * so there should be no ordered struct cover this offset in btrfs_ordered_update_i_size()
920 if (ordered && in btrfs_ordered_update_i_size()
921 ordered->outstanding_isize > test->outstanding_isize) in btrfs_ordered_update_i_size()
922 test->outstanding_isize = ordered->outstanding_isize; in btrfs_ordered_update_i_size()
928 * Some ordered extents may completed before the current one, and in btrfs_ordered_update_i_size()
931 if (ordered && ordered->outstanding_isize > new_i_size) in btrfs_ordered_update_i_size()
932 new_i_size = min_t(u64, ordered->outstanding_isize, i_size); in btrfs_ordered_update_i_size()
937 * We need to do this because we can't remove ordered extents until in btrfs_ordered_update_i_size()
940 * this ordered extent that we've already done all the real work, we in btrfs_ordered_update_i_size()
943 if (ordered) in btrfs_ordered_update_i_size()
944 set_bit(BTRFS_ORDERED_UPDATED_ISIZE, &ordered->flags); in btrfs_ordered_update_i_size()
950 * search the ordered extents for one corresponding to 'offset' and
958 struct btrfs_ordered_extent *ordered; in btrfs_find_ordered_sum() local
965 ordered = btrfs_lookup_ordered_extent(inode, offset); in btrfs_find_ordered_sum()
966 if (!ordered) in btrfs_find_ordered_sum()
970 list_for_each_entry_reverse(ordered_sum, &ordered->list, list) { in btrfs_find_ordered_sum()
989 btrfs_put_ordered_extent(ordered); in btrfs_find_ordered_sum()