Lines Matching refs:block_ctx
225 struct btrfsic_block_data_ctx *block_ctx;
248 struct btrfsic_block_data_ctx *block_ctx,
251 struct btrfsic_block_data_ctx *block_ctx,
257 *block_ctx, u64 next_bytenr,
267 struct btrfsic_block_data_ctx *block_ctx,
272 static void btrfsic_release_block_ctx(struct btrfsic_block_data_ctx *block_ctx);
274 struct btrfsic_block_data_ctx *block_ctx);
304 struct btrfsic_block_data_ctx *block_ctx,
898 sf->block_ctx = first_block_ctx;
914 sf->block_ctx->start, sf->nr,
938 sf->block_ctx->len) {
942 sf->block_ctx->start,
943 sf->block_ctx->dev->bdev);
946 btrfsic_read_from_block_data(sf->block_ctx,
963 sf->block_ctx->len)
966 sf->block_ctx, &root_item,
975 sf->block_ctx,
1006 next_stack->block_ctx =
1021 sf->block_ctx,
1038 sf->block_ctx->start,
1060 sf->block_ctx->len) {
1063 sf->block_ctx->start,
1064 sf->block_ctx->dev->bdev);
1068 sf->block_ctx, &key_ptr, key_ptr_offset,
1075 sf->block_ctx,
1101 next_stack->block_ctx = &sf->next_block_ctx;
1120 btrfsic_release_block_ctx(sf->block_ctx);
1140 struct btrfsic_block_data_ctx *block_ctx,
1147 size_t start_offset = offset_in_page(block_ctx->start);
1150 WARN_ON(offset + len > block_ctx->len);
1155 BUG_ON(i >= DIV_ROUND_UP(block_ctx->len, PAGE_SIZE));
1156 kaddr = block_ctx->datav[i];
1169 struct btrfsic_block_data_ctx *block_ctx,
1253 block_ctx->dev->bdev,
1254 block_ctx->dev_bytenr,
1313 struct btrfsic_block_data_ctx *block_ctx,
1329 block_ctx->len) {
1331 block_ctx->start, block_ctx->dev->bdev);
1335 btrfsic_read_from_block_data(block_ctx, &file_extent_item,
1349 block_ctx->len) {
1351 block_ctx->start, block_ctx->dev->bdev);
1354 btrfsic_read_from_block_data(block_ctx, &file_extent_item,
1509 static void btrfsic_release_block_ctx(struct btrfsic_block_data_ctx *block_ctx)
1511 if (block_ctx->mem_to_free) {
1514 BUG_ON(!block_ctx->datav);
1515 BUG_ON(!block_ctx->pagev);
1516 num_pages = (block_ctx->len + (u64)PAGE_SIZE - 1) >>
1521 if (block_ctx->datav[num_pages])
1522 block_ctx->datav[num_pages] = NULL;
1523 if (block_ctx->pagev[num_pages]) {
1524 __free_page(block_ctx->pagev[num_pages]);
1525 block_ctx->pagev[num_pages] = NULL;
1529 kfree(block_ctx->mem_to_free);
1530 block_ctx->mem_to_free = NULL;
1531 block_ctx->pagev = NULL;
1532 block_ctx->datav = NULL;
1537 struct btrfsic_block_data_ctx *block_ctx)
1545 BUG_ON(block_ctx->datav);
1546 BUG_ON(block_ctx->pagev);
1547 BUG_ON(block_ctx->mem_to_free);
1548 if (!PAGE_ALIGNED(block_ctx->dev_bytenr)) {
1550 block_ctx->dev_bytenr);
1554 num_pages = (block_ctx->len + (u64)PAGE_SIZE - 1) >>
1556 size = sizeof(*block_ctx->datav) + sizeof(*block_ctx->pagev);
1557 block_ctx->mem_to_free = kcalloc(num_pages, size, GFP_NOFS);
1558 if (!block_ctx->mem_to_free)
1560 block_ctx->datav = block_ctx->mem_to_free;
1561 block_ctx->pagev = (struct page **)(block_ctx->datav + num_pages);
1562 ret = btrfs_alloc_page_array(num_pages, block_ctx->pagev);
1566 dev_bytenr = block_ctx->dev_bytenr;
1571 bio = bio_alloc(block_ctx->dev->bdev, num_pages - i,
1576 ret = bio_add_page(bio, block_ctx->pagev[j],
1587 block_ctx->start, block_ctx->dev->bdev);
1596 block_ctx->datav[i] = page_address(block_ctx->pagev[i]);
1598 return block_ctx->len;
1695 struct btrfsic_block_data_ctx block_ctx;
1839 block_ctx.dev = dev_state;
1840 block_ctx.dev_bytenr = dev_bytenr;
1841 block_ctx.start = bytenr;
1842 block_ctx.len = processed_len;
1843 block_ctx.pagev = NULL;
1844 block_ctx.mem_to_free = NULL;
1845 block_ctx.datav = mapped_datav;
1906 &block_ctx,
1929 btrfsic_release_block_ctx(&block_ctx);
1961 block_ctx.dev = dev_state;
1962 block_ctx.dev_bytenr = dev_bytenr;
1963 block_ctx.start = bytenr;
1964 block_ctx.len = processed_len;
1965 block_ctx.pagev = NULL;
1966 block_ctx.mem_to_free = NULL;
1967 block_ctx.datav = mapped_datav;
1971 btrfsic_release_block_ctx(&block_ctx);
2022 &block_ctx, 0, 0);
2027 btrfsic_release_block_ctx(&block_ctx);
2535 struct btrfsic_block_data_ctx *block_ctx,
2545 block = btrfsic_block_hashtable_lookup(block_ctx->dev->bdev,
2546 block_ctx->dev_bytenr,
2555 dev_state = btrfsic_dev_state_lookup(block_ctx->dev->bdev->bd_dev);
2562 block->dev_bytenr = block_ctx->dev_bytenr;
2563 block->logical_bytenr = block_ctx->start;
2592 struct btrfsic_block_data_ctx block_ctx;
2602 &block_ctx, mirror_num);
2609 if (dev_state->bdev == block_ctx.dev->bdev &&
2610 dev_bytenr == block_ctx.dev_bytenr) {
2612 btrfsic_release_block_ctx(&block_ctx);
2615 btrfsic_release_block_ctx(&block_ctx);
2625 &block_ctx, mirror_num);
2630 bytenr, block_ctx.dev->bdev,
2631 block_ctx.dev_bytenr, mirror_num);