Lines Matching refs:block
228 struct btrfsic_block *block; member
293 struct btrfsic_block *block,
301 struct btrfsic_block *block,
312 struct btrfsic_block *block,
332 struct btrfsic_block *const block,
337 const struct btrfsic_block *block,
340 struct btrfsic_block *const block,
347 const struct btrfsic_block *block);
350 const struct btrfsic_block *block,
960 sf->block = first_block; in btrfsic_process_metablock()
967 sf->block->generation = le64_to_cpu(sf->hdr->generation); in btrfsic_process_metablock()
1036 sf->block, in btrfsic_process_metablock()
1067 next_stack->block = sf->next_block; in btrfsic_process_metablock()
1082 sf->block, in btrfsic_process_metablock()
1135 sf->block, in btrfsic_process_metablock()
1161 next_stack->block = sf->next_block; in btrfsic_process_metablock()
1229 struct btrfsic_block *block, in btrfsic_create_link_to_next_block() argument
1329 l->block_ref_from = block; in btrfsic_create_link_to_next_block()
1336 list_add(&l->node_ref_to, &block->ref_to_list); in btrfsic_create_link_to_next_block()
1372 struct btrfsic_block *block, in btrfsic_handle_extent_data() argument
1501 next_block, block, in btrfsic_handle_extent_data()
1752 struct btrfsic_block *block; in btrfsic_process_written_block() local
1770 block = btrfsic_block_hashtable_lookup(bdev, dev_bytenr, in btrfsic_process_written_block()
1772 if (NULL != block) { in btrfsic_process_written_block()
1776 if (block->is_superblock) { in btrfsic_process_written_block()
1790 btrfsic_dump_tree_sub(state, block, 0); in btrfsic_process_written_block()
1794 if (!block->is_superblock) { in btrfsic_process_written_block()
1809 if (block->logical_bytenr != bytenr && in btrfsic_process_written_block()
1810 !(!block->is_metadata && in btrfsic_process_written_block()
1811 block->logical_bytenr == 0)) in btrfsic_process_written_block()
1815 block->mirror_num, in btrfsic_process_written_block()
1817 block), in btrfsic_process_written_block()
1818 block->logical_bytenr); in btrfsic_process_written_block()
1822 dev_bytenr, block->mirror_num, in btrfsic_process_written_block()
1824 block)); in btrfsic_process_written_block()
1826 block->logical_bytenr = bytenr; in btrfsic_process_written_block()
1834 bytenr = block->logical_bytenr; in btrfsic_process_written_block()
1838 block->mirror_num, in btrfsic_process_written_block()
1839 btrfsic_get_block_type(state, block)); in btrfsic_process_written_block()
1844 list_empty(&block->ref_to_list) ? ' ' : '!', in btrfsic_process_written_block()
1845 list_empty(&block->ref_from_list) ? ' ' : '!'); in btrfsic_process_written_block()
1846 if (btrfsic_is_block_ref_by_superblock(state, block, 0)) { in btrfsic_process_written_block()
1848 btrfsic_get_block_type(state, block), bytenr, in btrfsic_process_written_block()
1849 dev_state->name, dev_bytenr, block->mirror_num, in btrfsic_process_written_block()
1850 block->generation, in btrfsic_process_written_block()
1851 btrfs_disk_key_objectid(&block->disk_key), in btrfsic_process_written_block()
1852 block->disk_key.type, in btrfsic_process_written_block()
1853 btrfs_disk_key_offset(&block->disk_key), in btrfsic_process_written_block()
1860 if (!block->is_iodone && !block->never_written) { in btrfsic_process_written_block()
1862 btrfsic_get_block_type(state, block), bytenr, in btrfsic_process_written_block()
1863 dev_state->name, dev_bytenr, block->mirror_num, in btrfsic_process_written_block()
1864 block->generation, in btrfsic_process_written_block()
1879 list_for_each_entry_safe(l, tmp, &block->ref_to_list, in btrfsic_process_written_block()
1901 block->never_written = 0; in btrfsic_process_written_block()
1902 block->iodone_w_error = 0; in btrfsic_process_written_block()
1904 block->is_iodone = 0; in btrfsic_process_written_block()
1907 block->orig_bio_bh_private = in btrfsic_process_written_block()
1909 block->orig_bio_bh_end_io.bio = in btrfsic_process_written_block()
1911 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
1912 bio->bi_private = block; in btrfsic_process_written_block()
1921 block->orig_bio_bh_private = in btrfsic_process_written_block()
1923 block->orig_bio_bh_end_io.bio = in btrfsic_process_written_block()
1926 block->next_in_same_bio = chained_block; in btrfsic_process_written_block()
1927 bio->bi_private = block; in btrfsic_process_written_block()
1930 block->is_iodone = 0; in btrfsic_process_written_block()
1931 block->orig_bio_bh_private = bh->b_private; in btrfsic_process_written_block()
1932 block->orig_bio_bh_end_io.bh = bh->b_end_io; in btrfsic_process_written_block()
1933 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
1934 bh->b_private = block; in btrfsic_process_written_block()
1937 block->is_iodone = 1; in btrfsic_process_written_block()
1938 block->orig_bio_bh_private = NULL; in btrfsic_process_written_block()
1939 block->orig_bio_bh_end_io.bio = NULL; in btrfsic_process_written_block()
1940 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
1944 block->flush_gen = dev_state->last_flush_gen + 1; in btrfsic_process_written_block()
1945 block->submit_bio_bh_rw = submit_bio_bh_rw; in btrfsic_process_written_block()
1947 block->logical_bytenr = bytenr; in btrfsic_process_written_block()
1948 block->is_metadata = 1; in btrfsic_process_written_block()
1949 if (block->is_superblock) { in btrfsic_process_written_block()
1954 block, in btrfsic_process_written_block()
1960 btrfsic_dump_tree_sub(state, block, 0); in btrfsic_process_written_block()
1963 block->mirror_num = 0; /* unknown */ in btrfsic_process_written_block()
1966 block, in btrfsic_process_written_block()
1974 block->is_metadata = 0; in btrfsic_process_written_block()
1975 block->mirror_num = 0; /* unknown */ in btrfsic_process_written_block()
1976 block->generation = BTRFSIC_GENERATION_UNKNOWN; in btrfsic_process_written_block()
1978 && list_empty(&block->ref_from_list)) { in btrfsic_process_written_block()
1985 btrfsic_block_hashtable_remove(block); in btrfsic_process_written_block()
1986 list_del(&block->all_blocks_node); in btrfsic_process_written_block()
1987 btrfsic_block_free(block); in btrfsic_process_written_block()
2028 block = btrfsic_block_alloc(); in btrfsic_process_written_block()
2029 if (NULL == block) { in btrfsic_process_written_block()
2034 block->dev_state = dev_state; in btrfsic_process_written_block()
2035 block->dev_bytenr = dev_bytenr; in btrfsic_process_written_block()
2036 block->logical_bytenr = bytenr; in btrfsic_process_written_block()
2037 block->is_metadata = is_metadata; in btrfsic_process_written_block()
2038 block->never_written = 0; in btrfsic_process_written_block()
2039 block->iodone_w_error = 0; in btrfsic_process_written_block()
2040 block->mirror_num = 0; /* unknown */ in btrfsic_process_written_block()
2041 block->flush_gen = dev_state->last_flush_gen + 1; in btrfsic_process_written_block()
2042 block->submit_bio_bh_rw = submit_bio_bh_rw; in btrfsic_process_written_block()
2044 block->is_iodone = 0; in btrfsic_process_written_block()
2047 block->orig_bio_bh_private = bio->bi_private; in btrfsic_process_written_block()
2048 block->orig_bio_bh_end_io.bio = bio->bi_end_io; in btrfsic_process_written_block()
2049 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
2050 bio->bi_private = block; in btrfsic_process_written_block()
2059 block->orig_bio_bh_private = in btrfsic_process_written_block()
2061 block->orig_bio_bh_end_io.bio = in btrfsic_process_written_block()
2063 block->next_in_same_bio = chained_block; in btrfsic_process_written_block()
2064 bio->bi_private = block; in btrfsic_process_written_block()
2067 block->is_iodone = 0; in btrfsic_process_written_block()
2068 block->orig_bio_bh_private = bh->b_private; in btrfsic_process_written_block()
2069 block->orig_bio_bh_end_io.bh = bh->b_end_io; in btrfsic_process_written_block()
2070 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
2071 bh->b_private = block; in btrfsic_process_written_block()
2074 block->is_iodone = 1; in btrfsic_process_written_block()
2075 block->orig_bio_bh_private = NULL; in btrfsic_process_written_block()
2076 block->orig_bio_bh_end_io.bio = NULL; in btrfsic_process_written_block()
2077 block->next_in_same_bio = NULL; in btrfsic_process_written_block()
2082 block->logical_bytenr, block->dev_state->name, in btrfsic_process_written_block()
2083 block->dev_bytenr, block->mirror_num); in btrfsic_process_written_block()
2084 list_add(&block->all_blocks_node, &state->all_blocks_list); in btrfsic_process_written_block()
2085 btrfsic_block_hashtable_add(block, &state->block_hashtable); in btrfsic_process_written_block()
2088 ret = btrfsic_process_metablock(state, block, in btrfsic_process_written_block()
2107 struct btrfsic_block *block = (struct btrfsic_block *)bp->bi_private; in btrfsic_bio_end_io() local
2116 BUG_ON(NULL == block); in btrfsic_bio_end_io()
2117 bp->bi_private = block->orig_bio_bh_private; in btrfsic_bio_end_io()
2118 bp->bi_end_io = block->orig_bio_bh_end_io.bio; in btrfsic_bio_end_io()
2122 struct btrfsic_dev_state *const dev_state = block->dev_state; in btrfsic_bio_end_io()
2128 btrfsic_get_block_type(dev_state->state, block), in btrfsic_bio_end_io()
2129 block->logical_bytenr, dev_state->name, in btrfsic_bio_end_io()
2130 block->dev_bytenr, block->mirror_num); in btrfsic_bio_end_io()
2131 next_block = block->next_in_same_bio; in btrfsic_bio_end_io()
2132 block->iodone_w_error = iodone_w_error; in btrfsic_bio_end_io()
2133 if (block->submit_bio_bh_rw & REQ_PREFLUSH) { in btrfsic_bio_end_io()
2141 if (block->submit_bio_bh_rw & REQ_FUA) in btrfsic_bio_end_io()
2142 block->flush_gen = 0; /* FUA completed means block is in btrfsic_bio_end_io()
2144 block->is_iodone = 1; /* for FLUSH, this releases the block */ in btrfsic_bio_end_io()
2145 block = next_block; in btrfsic_bio_end_io()
2146 } while (NULL != block); in btrfsic_bio_end_io()
2153 struct btrfsic_block *block = (struct btrfsic_block *)bh->b_private; in btrfsic_bh_end_io() local
2157 BUG_ON(NULL == block); in btrfsic_bh_end_io()
2158 dev_state = block->dev_state; in btrfsic_bh_end_io()
2162 btrfsic_get_block_type(dev_state->state, block), in btrfsic_bh_end_io()
2163 block->logical_bytenr, block->dev_state->name, in btrfsic_bh_end_io()
2164 block->dev_bytenr, block->mirror_num); in btrfsic_bh_end_io()
2166 block->iodone_w_error = iodone_w_error; in btrfsic_bh_end_io()
2167 if (block->submit_bio_bh_rw & REQ_PREFLUSH) { in btrfsic_bh_end_io()
2174 if (block->submit_bio_bh_rw & REQ_FUA) in btrfsic_bh_end_io()
2175 block->flush_gen = 0; /* FUA completed means block is on disk */ in btrfsic_bh_end_io()
2177 bh->b_private = block->orig_bio_bh_private; in btrfsic_bh_end_io()
2178 bh->b_end_io = block->orig_bio_bh_end_io.bh; in btrfsic_bh_end_io()
2179 block->is_iodone = 1; /* for FLUSH, this releases the block */ in btrfsic_bh_end_io()
2318 struct btrfsic_block *const block, in btrfsic_check_all_ref_blocks() argument
2348 list_for_each_entry(l, &block->ref_to_list, node_ref_to) { in btrfsic_check_all_ref_blocks()
2352 btrfsic_get_block_type(state, block), in btrfsic_check_all_ref_blocks()
2353 block->logical_bytenr, block->dev_state->name, in btrfsic_check_all_ref_blocks()
2354 block->dev_bytenr, block->mirror_num, in btrfsic_check_all_ref_blocks()
2407 l->block_ref_to->mirror_num, block->flush_gen, in btrfsic_check_all_ref_blocks()
2423 const struct btrfsic_block *block, in btrfsic_is_block_ref_by_superblock() argument
2440 list_for_each_entry(l, &block->ref_from_list, node_ref_from) { in btrfsic_is_block_ref_by_superblock()
2444 btrfsic_get_block_type(state, block), in btrfsic_is_block_ref_by_superblock()
2445 block->logical_bytenr, block->dev_state->name, in btrfsic_is_block_ref_by_superblock()
2446 block->dev_bytenr, block->mirror_num, in btrfsic_is_block_ref_by_superblock()
2500 const struct btrfsic_block *block) in btrfsic_get_block_type() argument
2502 if (block->is_superblock && in btrfsic_get_block_type()
2503 state->latest_superblock->dev_bytenr == block->dev_bytenr && in btrfsic_get_block_type()
2504 state->latest_superblock->dev_state->bdev == block->dev_state->bdev) in btrfsic_get_block_type()
2506 else if (block->is_superblock) in btrfsic_get_block_type()
2508 else if (block->is_metadata) in btrfsic_get_block_type()
2520 const struct btrfsic_block *block, in btrfsic_dump_tree_sub() argument
2538 btrfsic_get_block_type(state, block), in btrfsic_dump_tree_sub()
2539 block->logical_bytenr, block->dev_state->name, in btrfsic_dump_tree_sub()
2540 block->dev_bytenr, block->mirror_num); in btrfsic_dump_tree_sub()
2547 if (list_empty(&block->ref_to_list)) { in btrfsic_dump_tree_sub()
2551 if (block->mirror_num > 1 && in btrfsic_dump_tree_sub()
2558 list_for_each_entry(l, &block->ref_to_list, node_ref_to) { in btrfsic_dump_tree_sub()
2636 struct btrfsic_block *block; in btrfsic_block_lookup_or_add() local
2638 block = btrfsic_block_hashtable_lookup(block_ctx->dev->bdev, in btrfsic_block_lookup_or_add()
2641 if (NULL == block) { in btrfsic_block_lookup_or_add()
2644 block = btrfsic_block_alloc(); in btrfsic_block_lookup_or_add()
2645 if (NULL == block) { in btrfsic_block_lookup_or_add()
2652 btrfsic_block_free(block); in btrfsic_block_lookup_or_add()
2655 block->dev_state = dev_state; in btrfsic_block_lookup_or_add()
2656 block->dev_bytenr = block_ctx->dev_bytenr; in btrfsic_block_lookup_or_add()
2657 block->logical_bytenr = block_ctx->start; in btrfsic_block_lookup_or_add()
2658 block->is_metadata = is_metadata; in btrfsic_block_lookup_or_add()
2659 block->is_iodone = is_iodone; in btrfsic_block_lookup_or_add()
2660 block->never_written = never_written; in btrfsic_block_lookup_or_add()
2661 block->mirror_num = mirror_num; in btrfsic_block_lookup_or_add()
2665 btrfsic_get_block_type(state, block), in btrfsic_block_lookup_or_add()
2666 block->logical_bytenr, dev_state->name, in btrfsic_block_lookup_or_add()
2667 block->dev_bytenr, mirror_num); in btrfsic_block_lookup_or_add()
2668 list_add(&block->all_blocks_node, &state->all_blocks_list); in btrfsic_block_lookup_or_add()
2669 btrfsic_block_hashtable_add(block, &state->block_hashtable); in btrfsic_block_lookup_or_add()
2677 return block; in btrfsic_block_lookup_or_add()
2773 struct btrfsic_block *const block = in btrfsic_submit_bh() local
2776 block->is_iodone = 0; in btrfsic_submit_bh()
2777 block->never_written = 0; in btrfsic_submit_bh()
2778 block->iodone_w_error = 0; in btrfsic_submit_bh()
2779 block->flush_gen = dev_state->last_flush_gen + 1; in btrfsic_submit_bh()
2780 block->submit_bio_bh_rw = op_flags; in btrfsic_submit_bh()
2781 block->orig_bio_bh_private = bh->b_private; in btrfsic_submit_bh()
2782 block->orig_bio_bh_end_io.bh = bh->b_end_io; in btrfsic_submit_bh()
2783 block->next_in_same_bio = NULL; in btrfsic_submit_bh()
2784 bh->b_private = block; in btrfsic_submit_bh()
2859 struct btrfsic_block *const block = in __btrfsic_submit_bio() local
2862 block->is_iodone = 0; in __btrfsic_submit_bio()
2863 block->never_written = 0; in __btrfsic_submit_bio()
2864 block->iodone_w_error = 0; in __btrfsic_submit_bio()
2865 block->flush_gen = dev_state->last_flush_gen + 1; in __btrfsic_submit_bio()
2866 block->submit_bio_bh_rw = bio->bi_opf; in __btrfsic_submit_bio()
2867 block->orig_bio_bh_private = bio->bi_private; in __btrfsic_submit_bio()
2868 block->orig_bio_bh_end_io.bio = bio->bi_end_io; in __btrfsic_submit_bio()
2869 block->next_in_same_bio = NULL; in __btrfsic_submit_bio()
2870 bio->bi_private = block; in __btrfsic_submit_bio()