Lines Matching refs:async_extent

357 struct async_extent {
392 struct async_extent *async_extent;
394 async_extent = kmalloc(sizeof(*async_extent), GFP_NOFS);
395 BUG_ON(!async_extent); /* -ENOMEM */
396 async_extent->start = start;
397 async_extent->ram_size = ram_size;
398 async_extent->compressed_size = compressed_size;
399 async_extent->pages = pages;
400 async_extent->nr_pages = nr_pages;
401 async_extent->compress_type = compress_type;
402 list_add_tail(&async_extent->list, &cow->extents);
744 static void free_async_extent_pages(struct async_extent *async_extent)
748 if (!async_extent->pages)
751 for (i = 0; i < async_extent->nr_pages; i++) {
752 WARN_ON(async_extent->pages[i]->mapping);
753 put_page(async_extent->pages[i]);
755 kfree(async_extent->pages);
756 async_extent->nr_pages = 0;
757 async_extent->pages = NULL;
770 struct async_extent *async_extent;
780 async_extent = list_entry(async_chunk->extents.next,
781 struct async_extent, list);
782 list_del(&async_extent->list);
785 lock_extent(io_tree, async_extent->start,
786 async_extent->start + async_extent->ram_size - 1);
788 if (!async_extent->pages) {
794 async_extent->start,
795 async_extent->start +
796 async_extent->ram_size - 1,
809 async_extent->start,
810 async_extent->start +
811 async_extent->ram_size - 1,
815 kfree(async_extent);
820 ret = btrfs_reserve_extent(root, async_extent->ram_size,
821 async_extent->compressed_size,
822 async_extent->compressed_size,
825 free_async_extent_pages(async_extent);
828 unlock_extent(io_tree, async_extent->start,
829 async_extent->start +
830 async_extent->ram_size - 1);
839 async_extent->start,
840 async_extent->start +
841 async_extent->ram_size - 1);
851 em = create_io_em(inode, async_extent->start,
852 async_extent->ram_size, /* len */
853 async_extent->start, /* orig_start */
857 async_extent->ram_size, /* ram_bytes */
858 async_extent->compress_type,
866 async_extent->start,
868 async_extent->ram_size,
871 async_extent->compress_type);
873 btrfs_drop_extent_cache(inode, async_extent->start,
874 async_extent->start +
875 async_extent->ram_size - 1, 0);
883 extent_clear_unlock_delalloc(inode, async_extent->start,
884 async_extent->start +
885 async_extent->ram_size - 1,
889 if (btrfs_submit_compressed_write(inode, async_extent->start,
890 async_extent->ram_size,
892 ins.offset, async_extent->pages,
893 async_extent->nr_pages,
896 struct page *p = async_extent->pages[0];
897 const u64 start = async_extent->start;
898 const u64 end = start + async_extent->ram_size - 1;
907 free_async_extent_pages(async_extent);
910 kfree(async_extent);
918 extent_clear_unlock_delalloc(inode, async_extent->start,
919 async_extent->start +
920 async_extent->ram_size - 1,
927 free_async_extent_pages(async_extent);
928 kfree(async_extent);