Lines Matching refs:block_ctx
225 struct btrfsic_block_data_ctx *block_ctx;
290 struct btrfsic_block_data_ctx *block_ctx,
293 struct btrfsic_block_data_ctx *block_ctx,
299 *block_ctx, u64 next_bytenr,
309 struct btrfsic_block_data_ctx *block_ctx,
314 static void btrfsic_release_block_ctx(struct btrfsic_block_data_ctx *block_ctx);
316 struct btrfsic_block_data_ctx *block_ctx);
354 struct btrfsic_block_data_ctx *block_ctx,
951 sf->block_ctx = first_block_ctx;
967 sf->block_ctx->start, sf->nr,
991 sf->block_ctx->len) {
994 sf->block_ctx->start,
995 sf->block_ctx->dev->name);
998 btrfsic_read_from_block_data(sf->block_ctx,
1015 sf->block_ctx->len)
1018 sf->block_ctx, &root_item,
1027 sf->block_ctx,
1058 next_stack->block_ctx =
1073 sf->block_ctx,
1090 sf->block_ctx->start,
1112 sf->block_ctx->len) {
1114 sf->block_ctx->start,
1115 sf->block_ctx->dev->name);
1119 sf->block_ctx, &key_ptr, key_ptr_offset,
1126 sf->block_ctx,
1152 next_stack->block_ctx = &sf->next_block_ctx;
1171 btrfsic_release_block_ctx(sf->block_ctx);
1191 struct btrfsic_block_data_ctx *block_ctx,
1198 size_t start_offset = offset_in_page(block_ctx->start);
1201 WARN_ON(offset + len > block_ctx->len);
1206 BUG_ON(i >= DIV_ROUND_UP(block_ctx->len, PAGE_SIZE));
1207 kaddr = block_ctx->datav[i];
1220 struct btrfsic_block_data_ctx *block_ctx,
1302 block_ctx->dev->bdev,
1303 block_ctx->dev_bytenr,
1362 struct btrfsic_block_data_ctx *block_ctx,
1378 block_ctx->len) {
1380 block_ctx->start, block_ctx->dev->name);
1384 btrfsic_read_from_block_data(block_ctx, &file_extent_item,
1398 block_ctx->len) {
1400 block_ctx->start, block_ctx->dev->name);
1403 btrfsic_read_from_block_data(block_ctx, &file_extent_item,
1552 static void btrfsic_release_block_ctx(struct btrfsic_block_data_ctx *block_ctx)
1554 if (block_ctx->mem_to_free) {
1557 BUG_ON(!block_ctx->datav);
1558 BUG_ON(!block_ctx->pagev);
1559 num_pages = (block_ctx->len + (u64)PAGE_SIZE - 1) >>
1563 if (block_ctx->datav[num_pages]) {
1564 kunmap(block_ctx->pagev[num_pages]);
1565 block_ctx->datav[num_pages] = NULL;
1567 if (block_ctx->pagev[num_pages]) {
1568 __free_page(block_ctx->pagev[num_pages]);
1569 block_ctx->pagev[num_pages] = NULL;
1573 kfree(block_ctx->mem_to_free);
1574 block_ctx->mem_to_free = NULL;
1575 block_ctx->pagev = NULL;
1576 block_ctx->datav = NULL;
1581 struct btrfsic_block_data_ctx *block_ctx)
1589 BUG_ON(block_ctx->datav);
1590 BUG_ON(block_ctx->pagev);
1591 BUG_ON(block_ctx->mem_to_free);
1592 if (!PAGE_ALIGNED(block_ctx->dev_bytenr)) {
1594 block_ctx->dev_bytenr);
1598 num_pages = (block_ctx->len + (u64)PAGE_SIZE - 1) >>
1600 size = sizeof(*block_ctx->datav) + sizeof(*block_ctx->pagev);
1601 block_ctx->mem_to_free = kcalloc(num_pages, size, GFP_NOFS);
1602 if (!block_ctx->mem_to_free)
1604 block_ctx->datav = block_ctx->mem_to_free;
1605 block_ctx->pagev = (struct page **)(block_ctx->datav + num_pages);
1607 block_ctx->pagev[i] = alloc_page(GFP_NOFS);
1608 if (!block_ctx->pagev[i])
1612 dev_bytenr = block_ctx->dev_bytenr;
1618 bio_set_dev(bio, block_ctx->dev->bdev);
1623 ret = bio_add_page(bio, block_ctx->pagev[j],
1634 block_ctx->start, block_ctx->dev->name);
1643 block_ctx->datav[i] = kmap(block_ctx->pagev[i]);
1645 return block_ctx->len;
1740 struct btrfsic_block_data_ctx block_ctx;
1879 block_ctx.dev = dev_state;
1880 block_ctx.dev_bytenr = dev_bytenr;
1881 block_ctx.start = bytenr;
1882 block_ctx.len = processed_len;
1883 block_ctx.pagev = NULL;
1884 block_ctx.mem_to_free = NULL;
1885 block_ctx.datav = mapped_datav;
1946 &block_ctx,
1969 btrfsic_release_block_ctx(&block_ctx);
1999 block_ctx.dev = dev_state;
2000 block_ctx.dev_bytenr = dev_bytenr;
2001 block_ctx.start = bytenr;
2002 block_ctx.len = processed_len;
2003 block_ctx.pagev = NULL;
2004 block_ctx.mem_to_free = NULL;
2005 block_ctx.datav = mapped_datav;
2009 btrfsic_release_block_ctx(&block_ctx);
2060 &block_ctx, 0, 0);
2065 btrfsic_release_block_ctx(&block_ctx);
2564 struct btrfsic_block_data_ctx *block_ctx,
2574 block = btrfsic_block_hashtable_lookup(block_ctx->dev->bdev,
2575 block_ctx->dev_bytenr,
2584 dev_state = btrfsic_dev_state_lookup(block_ctx->dev->bdev->bd_dev);
2591 block->dev_bytenr = block_ctx->dev_bytenr;
2592 block->logical_bytenr = block_ctx->start;
2621 struct btrfsic_block_data_ctx block_ctx;
2631 &block_ctx, mirror_num);
2638 if (dev_state->bdev == block_ctx.dev->bdev &&
2639 dev_bytenr == block_ctx.dev_bytenr) {
2641 btrfsic_release_block_ctx(&block_ctx);
2644 btrfsic_release_block_ctx(&block_ctx);
2653 &block_ctx, mirror_num);
2658 bytenr, block_ctx.dev->name,
2659 block_ctx.dev_bytenr, mirror_num);