Lines Matching full:ordered

42 #include "ordered-data.h"
389 * Cleanup all submitted ordered extents in specified range to handle errors
395 * to be released, which we want to happen only when finishing the ordered
414 * Here we just clear all Ordered bits for every page in the in btrfs_cleanup_ordered_extents()
416 * the ordered extent accounting for the range. in btrfs_cleanup_ordered_extents()
840 * This is done inside an ordered work queue, and the compression is spread
841 * across many cpus. The actual IO submission is step two, and the ordered work
1097 struct btrfs_ordered_extent *ordered; in submit_one_async_extent() local
1165 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in submit_one_async_extent()
1167 if (IS_ERR(ordered)) { in submit_one_async_extent()
1169 ret = PTR_ERR(ordered); in submit_one_async_extent()
1178 btrfs_submit_compressed_write(ordered, in submit_one_async_extent()
1247 * allocate extents on disk for the range, and create ordered data structs
1267 * while-loop, the ordered extents created in previous iterations are cleaned up.
1325 * Do set the Ordered (Private2) bit so we know this page was properly in cow_file_range()
1348 struct btrfs_ordered_extent *ordered; in cow_file_range() local
1412 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in cow_file_range()
1414 if (IS_ERR(ordered)) { in cow_file_range()
1417 ret = PTR_ERR(ordered); in cow_file_range()
1422 ret = btrfs_reloc_clone_csums(ordered); in cow_file_range()
1428 * at out_unlock label to free meta of this ordered in cow_file_range()
1433 * skip current ordered extent. in cow_file_range()
1440 btrfs_put_ordered_extent(ordered); in cow_file_range()
1455 * free metadata of current ordered extent, we're OK to exit. in cow_file_range()
1483 * For the range (1). We have already instantiated the ordered extents in cow_file_range()
1484 * for this region, thus we need to cleanup those ordered extents. in cow_file_range()
1486 * are also handled by the ordered extents cleanup. in cow_file_range()
1509 * (or a subrange) and failed to create the respective ordered extent, in cow_file_range()
1548 * Phase two of compressed writeback. This is the ordered portion of the code,
1781 * This is to ensure error handling won't need to clear dirty/ordered flags without in fallback_to_cow()
1933 struct btrfs_ordered_extent *ordered; in nocow_one_range() local
1952 ordered = btrfs_alloc_ordered_extent(inode, file_pos, &nocow_args->file_extent, in nocow_one_range()
1956 if (IS_ERR(ordered)) { in nocow_one_range()
1959 ret = PTR_ERR(ordered); in nocow_one_range()
1967 * metadata of the created ordered extent. in nocow_one_range()
1969 ret = btrfs_reloc_clone_csums(ordered); in nocow_one_range()
1970 btrfs_put_ordered_extent(ordered); in nocow_one_range()
2023 /* The range that has ordered extent(s). */ in run_delalloc_nocow()
2215 * No need to touch the io tree range nor set folio ordered flag, as in run_delalloc_nocow()
2639 * given a list of ordered sums record them in the inode. This happens
2739 struct btrfs_ordered_extent *ordered; in btrfs_writepage_fixup_worker() local
2773 * while waiting for the ordered extent. in btrfs_writepage_fixup_worker()
2802 /* already ordered? We're done */ in btrfs_writepage_fixup_worker()
2806 ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE); in btrfs_writepage_fixup_worker()
2807 if (ordered) { in btrfs_writepage_fixup_worker()
2811 btrfs_start_ordered_extent(ordered); in btrfs_writepage_fixup_worker()
2812 btrfs_put_ordered_extent(ordered); in btrfs_writepage_fixup_worker()
2864 * properly happens and the data=ordered rules are followed.
2866 * In our case any range that doesn't have the ORDERED bit set
2868 * to fix it up. The async helper will wait for ordered extents, set
2877 /* This folio has ordered extent covering it already */ in btrfs_writepage_cow_fixup()
2992 * EXTENT_DELALLOC_BIT bit through the ordered extent completion. in insert_reserved_file_extent()
3058 * For delalloc, when completing an ordered extent we update the inode's in insert_ordered_extent_file_extent()
3061 * except if the ordered extent was truncated. in insert_ordered_extent_file_extent()
3073 * As ordered data IO finishes, this gets called so we can finish
3074 * an ordered extent if the range of bytes in the file it covers are
3240 * If we failed to finish this ordered extent for any reason we in btrfs_finish_one_ordered()
3241 * need to make sure BTRFS_ORDERED_IOERR is set on the ordered in btrfs_finish_one_ordered()
3245 * marking this ordered extent as failed. in btrfs_finish_one_ordered()
3275 * If the ordered extent had an IOERR or something else went in btrfs_finish_one_ordered()
3276 * wrong we need to return the space for this ordered extent in btrfs_finish_one_ordered()
3302 * the ordered extent was created. in btrfs_finish_one_ordered()
3312 * updating everything for this ordered extent. in btrfs_finish_one_ordered()
3324 int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered) in btrfs_finish_ordered_io() argument
3326 if (btrfs_is_zoned(ordered->inode->root->fs_info) && in btrfs_finish_ordered_io()
3327 !test_bit(BTRFS_ORDERED_IOERR, &ordered->flags) && in btrfs_finish_ordered_io()
3328 list_empty(&ordered->bioc_list)) in btrfs_finish_ordered_io()
3329 btrfs_finish_ordered_zoned(ordered); in btrfs_finish_ordered_io()
3330 return btrfs_finish_one_ordered(ordered); in btrfs_finish_ordered_io()
4890 struct btrfs_ordered_extent *ordered; in btrfs_truncate_block() local
5009 ordered = btrfs_lookup_ordered_extent(inode, block_start); in btrfs_truncate_block()
5010 if (ordered) { in btrfs_truncate_block()
5014 btrfs_start_ordered_extent(ordered); in btrfs_truncate_block()
5015 btrfs_put_ordered_extent(ordered); in btrfs_truncate_block()
5356 * the ordered io finishing, while we release here the extent_map and
7234 * any ordered extents.
7486 * We have folio locked so no new ordered extent can be created on this in btrfs_invalidate_folio()
7490 * Furthermore, endio function won't skip folio which has Ordered in btrfs_invalidate_folio()
7492 * invalidate_folio to do the same ordered extent accounting twice in btrfs_invalidate_folio()
7496 * do double ordered extent accounting on the same folio. in btrfs_invalidate_folio()
7511 * still safe to wait for ordered extent to finish. in btrfs_invalidate_folio()
7523 struct btrfs_ordered_extent *ordered; in btrfs_invalidate_folio() local
7528 ordered = btrfs_lookup_first_ordered_range(inode, cur, in btrfs_invalidate_folio()
7530 if (!ordered) { in btrfs_invalidate_folio()
7533 * No ordered extent covering this range, we are safe in btrfs_invalidate_folio()
7539 if (ordered->file_offset > cur) { in btrfs_invalidate_folio()
7542 * covered by any ordered extent. in btrfs_invalidate_folio()
7544 * the ordered extent in the next iteration. in btrfs_invalidate_folio()
7546 range_end = ordered->file_offset - 1; in btrfs_invalidate_folio()
7551 range_end = min(ordered->file_offset + ordered->num_bytes - 1, in btrfs_invalidate_folio()
7557 * If Ordered is cleared, it means endio has in btrfs_invalidate_folio()
7568 * for any ordered extents now. Don't clear EXTENT_DELALLOC_NEW in btrfs_invalidate_folio()
7569 * here, must leave that up for the ordered extent completion. in btrfs_invalidate_folio()
7581 set_bit(BTRFS_ORDERED_TRUNCATED, &ordered->flags); in btrfs_invalidate_folio()
7582 ordered->truncated_len = min(ordered->truncated_len, in btrfs_invalidate_folio()
7583 cur - ordered->file_offset); in btrfs_invalidate_folio()
7587 * If the ordered extent has finished, we're safe to delete all in btrfs_invalidate_folio()
7592 if (btrfs_dec_test_ordered_pending(inode, &ordered, in btrfs_invalidate_folio()
7594 btrfs_finish_ordered_io(ordered); in btrfs_invalidate_folio()
7596 * The ordered extent has finished, now we're again in btrfs_invalidate_folio()
7602 if (ordered) in btrfs_invalidate_folio()
7603 btrfs_put_ordered_extent(ordered); in btrfs_invalidate_folio()
7628 * We have iterated through all ordered extents of the page, the page in btrfs_invalidate_folio()
7629 * should not have Ordered anymore, or the above iteration in btrfs_invalidate_folio()
7935 struct btrfs_ordered_extent *ordered; in btrfs_destroy_inode() local
7962 * If this is a free space inode do not take the ordered extents lockdep in btrfs_destroy_inode()
7968 ordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1); in btrfs_destroy_inode()
7969 if (!ordered) in btrfs_destroy_inode()
7973 "found ordered extent %llu %llu on inode cleanup", in btrfs_destroy_inode()
7974 ordered->file_offset, ordered->num_bytes); in btrfs_destroy_inode()
7979 btrfs_remove_ordered_extent(inode, ordered); in btrfs_destroy_inode()
7980 btrfs_put_ordered_extent(ordered); in btrfs_destroy_inode()
7981 btrfs_put_ordered_extent(ordered); in btrfs_destroy_inode()
9564 struct btrfs_ordered_extent *ordered; in btrfs_encoded_read() local
9577 ordered = btrfs_lookup_ordered_range(inode, start, in btrfs_encoded_read()
9579 if (ordered) { in btrfs_encoded_read()
9580 btrfs_put_ordered_extent(ordered); in btrfs_encoded_read()
9587 struct btrfs_ordered_extent *ordered; in btrfs_encoded_read() local
9595 ordered = btrfs_lookup_ordered_range(inode, start, in btrfs_encoded_read()
9597 if (!ordered) in btrfs_encoded_read()
9599 btrfs_put_ordered_extent(ordered); in btrfs_encoded_read()
9707 struct btrfs_ordered_extent *ordered; in btrfs_do_encoded_write() local
9828 struct btrfs_ordered_extent *ordered; in btrfs_do_encoded_write() local
9839 ordered = btrfs_lookup_ordered_range(inode, start, num_bytes); in btrfs_do_encoded_write()
9840 if (!ordered && in btrfs_do_encoded_write()
9843 if (ordered) in btrfs_do_encoded_write()
9844 btrfs_put_ordered_extent(ordered); in btrfs_do_encoded_write()
9897 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in btrfs_do_encoded_write()
9900 if (IS_ERR(ordered)) { in btrfs_do_encoded_write()
9902 ret = PTR_ERR(ordered); in btrfs_do_encoded_write()
9914 btrfs_submit_compressed_write(ordered, folios, nr_folios, 0, false); in btrfs_do_encoded_write()
10435 * Verify that there are no ordered extents for a given file range.
10444 * we have flushed all delalloc in the range, we have waited for all ordered
10451 struct btrfs_ordered_extent *ordered; in btrfs_assert_inode_range_clean() local
10456 ordered = btrfs_lookup_first_ordered_range(inode, start, end + 1 - start); in btrfs_assert_inode_range_clean()
10457 if (ordered) { in btrfs_assert_inode_range_clean()
10459 "found unexpected ordered extent in file range [%llu, %llu] for inode %llu root %llu (ordered range… in btrfs_assert_inode_range_clean()
10461 ordered->file_offset, in btrfs_assert_inode_range_clean()
10462 ordered->file_offset + ordered->num_bytes - 1); in btrfs_assert_inode_range_clean()
10463 btrfs_put_ordered_extent(ordered); in btrfs_assert_inode_range_clean()
10466 ASSERT(ordered == NULL); in btrfs_assert_inode_range_clean()