Lines Matching full:ordered
42 #include "ordered-data.h"
386 * Cleanup all submitted ordered extents in specified range to handle errors
392 * to be released, which we want to happen only when finishing the ordered
409 * Here we just clear all Ordered bits for every page in the in btrfs_cleanup_ordered_extents()
411 * the ordered extent accounting for the range. in btrfs_cleanup_ordered_extents()
850 * This is done inside an ordered work queue, and the compression is spread
851 * across many cpus. The actual IO submission is step two, and the ordered work
1105 struct btrfs_ordered_extent *ordered; in submit_one_async_extent() local
1173 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in submit_one_async_extent()
1175 if (IS_ERR(ordered)) { in submit_one_async_extent()
1177 ret = PTR_ERR(ordered); in submit_one_async_extent()
1186 btrfs_submit_compressed_write(ordered, in submit_one_async_extent()
1255 * allocate extents on disk for the range, and create ordered data structs
1275 * while-loop, the ordered extents created in previous iterations are cleaned up.
1333 * Do set the Ordered (Private2) bit so we know this page was properly in cow_file_range()
1356 struct btrfs_ordered_extent *ordered; in cow_file_range() local
1420 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in cow_file_range()
1422 if (IS_ERR(ordered)) { in cow_file_range()
1425 ret = PTR_ERR(ordered); in cow_file_range()
1430 ret = btrfs_reloc_clone_csums(ordered); in cow_file_range()
1436 * at out_unlock label to free meta of this ordered in cow_file_range()
1441 * skip current ordered extent. in cow_file_range()
1448 btrfs_put_ordered_extent(ordered); in cow_file_range()
1463 * free metadata of current ordered extent, we're OK to exit. in cow_file_range()
1491 * For the range (1). We have already instantiated the ordered extents in cow_file_range()
1492 * for this region, thus we need to cleanup those ordered extents. in cow_file_range()
1494 * are also handled by the ordered extents cleanup. in cow_file_range()
1517 * (or a subrange) and failed to create the respective ordered extent, in cow_file_range()
1555 * Phase two of compressed writeback. This is the ordered portion of the code,
1981 struct btrfs_ordered_extent *ordered; in nocow_one_range() local
2000 ordered = btrfs_alloc_ordered_extent(inode, file_pos, &nocow_args->file_extent, in nocow_one_range()
2004 if (IS_ERR(ordered)) { in nocow_one_range()
2008 return PTR_ERR(ordered); in nocow_one_range()
2015 * metadata of the created ordered extent. in nocow_one_range()
2017 ret = btrfs_reloc_clone_csums(ordered); in nocow_one_range()
2018 btrfs_put_ordered_extent(ordered); in nocow_one_range()
2025 * On error, we need to cleanup the ordered extents we created. in nocow_one_range()
2256 * Need to clear the dirty flags and finish the ordered extents. in run_delalloc_nocow()
2280 * So for all above cases, if @cow_start is set, cleanup ordered extents in run_delalloc_nocow()
2651 * given a list of ordered sums record them in the inode. This happens
2751 struct btrfs_ordered_extent *ordered; in btrfs_writepage_fixup_worker() local
2785 * while waiting for the ordered extent. in btrfs_writepage_fixup_worker()
2814 /* already ordered? We're done */ in btrfs_writepage_fixup_worker()
2818 ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE); in btrfs_writepage_fixup_worker()
2819 if (ordered) { in btrfs_writepage_fixup_worker()
2823 btrfs_start_ordered_extent(ordered); in btrfs_writepage_fixup_worker()
2824 btrfs_put_ordered_extent(ordered); in btrfs_writepage_fixup_worker()
2876 * properly happens and the data=ordered rules are followed.
2878 * In our case any range that doesn't have the ORDERED bit set
2880 * to fix it up. The async helper will wait for ordered extents, set
2889 /* This folio has ordered extent covering it already */ in btrfs_writepage_cow_fixup()
3004 * EXTENT_DELALLOC_BIT bit through the ordered extent completion. in insert_reserved_file_extent()
3072 * For delalloc, when completing an ordered extent we update the inode's in insert_ordered_extent_file_extent()
3075 * except if the ordered extent was truncated. in insert_ordered_extent_file_extent()
3087 * As ordered data IO finishes, this gets called so we can finish
3088 * an ordered extent if the range of bytes in the file it covers are
3253 * If we failed to finish this ordered extent for any reason we in btrfs_finish_one_ordered()
3254 * need to make sure BTRFS_ORDERED_IOERR is set on the ordered in btrfs_finish_one_ordered()
3258 * marking this ordered extent as failed. in btrfs_finish_one_ordered()
3286 * If the ordered extent had an IOERR or something else went in btrfs_finish_one_ordered()
3287 * wrong we need to return the space for this ordered extent in btrfs_finish_one_ordered()
3313 * the ordered extent was created. in btrfs_finish_one_ordered()
3323 * updating everything for this ordered extent. in btrfs_finish_one_ordered()
3335 int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered) in btrfs_finish_ordered_io() argument
3337 if (btrfs_is_zoned(ordered->inode->root->fs_info) && in btrfs_finish_ordered_io()
3338 !test_bit(BTRFS_ORDERED_IOERR, &ordered->flags) && in btrfs_finish_ordered_io()
3339 list_empty(&ordered->bioc_list)) in btrfs_finish_ordered_io()
3340 btrfs_finish_ordered_zoned(ordered); in btrfs_finish_ordered_io()
3341 return btrfs_finish_one_ordered(ordered); in btrfs_finish_ordered_io()
4810 struct btrfs_ordered_extent *ordered; in btrfs_truncate_block() local
4887 ordered = btrfs_lookup_ordered_extent(inode, block_start); in btrfs_truncate_block()
4888 if (ordered) { in btrfs_truncate_block()
4892 btrfs_start_ordered_extent(ordered); in btrfs_truncate_block()
4893 btrfs_put_ordered_extent(ordered); in btrfs_truncate_block()
5225 * the ordered io finishing, while we release here the extent_map and
7106 * any ordered extents.
7364 * We have folio locked so no new ordered extent can be created on this in btrfs_invalidate_folio()
7368 * Furthermore, endio function won't skip folio which has Ordered in btrfs_invalidate_folio()
7370 * invalidate_folio to do the same ordered extent accounting twice in btrfs_invalidate_folio()
7374 * do double ordered extent accounting on the same folio. in btrfs_invalidate_folio()
7389 * still safe to wait for ordered extent to finish. in btrfs_invalidate_folio()
7401 struct btrfs_ordered_extent *ordered; in btrfs_invalidate_folio() local
7406 ordered = btrfs_lookup_first_ordered_range(inode, cur, in btrfs_invalidate_folio()
7408 if (!ordered) { in btrfs_invalidate_folio()
7411 * No ordered extent covering this range, we are safe in btrfs_invalidate_folio()
7417 if (ordered->file_offset > cur) { in btrfs_invalidate_folio()
7420 * covered by any ordered extent. in btrfs_invalidate_folio()
7422 * the ordered extent in the next iteration. in btrfs_invalidate_folio()
7424 range_end = ordered->file_offset - 1; in btrfs_invalidate_folio()
7429 range_end = min(ordered->file_offset + ordered->num_bytes - 1, in btrfs_invalidate_folio()
7435 * If Ordered is cleared, it means endio has in btrfs_invalidate_folio()
7446 * for any ordered extents now. Don't clear EXTENT_DELALLOC_NEW in btrfs_invalidate_folio()
7447 * here, must leave that up for the ordered extent completion. in btrfs_invalidate_folio()
7459 set_bit(BTRFS_ORDERED_TRUNCATED, &ordered->flags); in btrfs_invalidate_folio()
7460 ordered->truncated_len = min(ordered->truncated_len, in btrfs_invalidate_folio()
7461 cur - ordered->file_offset); in btrfs_invalidate_folio()
7465 * If the ordered extent has finished, we're safe to delete all in btrfs_invalidate_folio()
7470 if (btrfs_dec_test_ordered_pending(inode, &ordered, in btrfs_invalidate_folio()
7472 btrfs_finish_ordered_io(ordered); in btrfs_invalidate_folio()
7474 * The ordered extent has finished, now we're again in btrfs_invalidate_folio()
7480 if (ordered) in btrfs_invalidate_folio()
7481 btrfs_put_ordered_extent(ordered); in btrfs_invalidate_folio()
7507 * We have iterated through all ordered extents of the page, the page in btrfs_invalidate_folio()
7508 * should not have Ordered anymore, or the above iteration in btrfs_invalidate_folio()
7814 struct btrfs_ordered_extent *ordered; in btrfs_destroy_inode() local
7841 * If this is a free space inode do not take the ordered extents lockdep in btrfs_destroy_inode()
7847 ordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1); in btrfs_destroy_inode()
7848 if (!ordered) in btrfs_destroy_inode()
7852 "found ordered extent %llu %llu on inode cleanup", in btrfs_destroy_inode()
7853 ordered->file_offset, ordered->num_bytes); in btrfs_destroy_inode()
7858 btrfs_remove_ordered_extent(inode, ordered); in btrfs_destroy_inode()
7859 btrfs_put_ordered_extent(ordered); in btrfs_destroy_inode()
7860 btrfs_put_ordered_extent(ordered); in btrfs_destroy_inode()
9399 struct btrfs_ordered_extent *ordered; in btrfs_encoded_read() local
9412 ordered = btrfs_lookup_ordered_range(inode, start, in btrfs_encoded_read()
9414 if (ordered) { in btrfs_encoded_read()
9415 btrfs_put_ordered_extent(ordered); in btrfs_encoded_read()
9422 struct btrfs_ordered_extent *ordered; in btrfs_encoded_read() local
9430 ordered = btrfs_lookup_ordered_range(inode, start, in btrfs_encoded_read()
9432 if (!ordered) in btrfs_encoded_read()
9434 btrfs_put_ordered_extent(ordered); in btrfs_encoded_read()
9542 struct btrfs_ordered_extent *ordered; in btrfs_do_encoded_write() local
9663 struct btrfs_ordered_extent *ordered; in btrfs_do_encoded_write() local
9674 ordered = btrfs_lookup_ordered_range(inode, start, num_bytes); in btrfs_do_encoded_write()
9675 if (!ordered && in btrfs_do_encoded_write()
9678 if (ordered) in btrfs_do_encoded_write()
9679 btrfs_put_ordered_extent(ordered); in btrfs_do_encoded_write()
9732 ordered = btrfs_alloc_ordered_extent(inode, start, &file_extent, in btrfs_do_encoded_write()
9735 if (IS_ERR(ordered)) { in btrfs_do_encoded_write()
9737 ret = PTR_ERR(ordered); in btrfs_do_encoded_write()
9749 btrfs_submit_compressed_write(ordered, folios, nr_folios, 0, false); in btrfs_do_encoded_write()
10270 * Verify that there are no ordered extents for a given file range.
10279 * we have flushed all delalloc in the range, we have waited for all ordered
10286 struct btrfs_ordered_extent *ordered; in btrfs_assert_inode_range_clean() local
10291 ordered = btrfs_lookup_first_ordered_range(inode, start, end + 1 - start); in btrfs_assert_inode_range_clean()
10292 if (ordered) { in btrfs_assert_inode_range_clean()
10294 "found unexpected ordered extent in file range [%llu, %llu] for inode %llu root %llu (ordered range… in btrfs_assert_inode_range_clean()
10296 ordered->file_offset, in btrfs_assert_inode_range_clean()
10297 ordered->file_offset + ordered->num_bytes - 1); in btrfs_assert_inode_range_clean()
10298 btrfs_put_ordered_extent(ordered); in btrfs_assert_inode_range_clean()
10301 ASSERT(ordered == NULL); in btrfs_assert_inode_range_clean()