Lines Matching refs:l
271 struct btrfsic_block_link *l,
273 static void btrfsic_block_link_hashtable_remove(struct btrfsic_block_link *l);
343 const struct btrfsic_block_link *l);
345 const struct btrfsic_block_link *l);
429 static void btrfsic_block_link_init(struct btrfsic_block_link *l) in btrfsic_block_link_init() argument
431 l->magic_num = BTRFSIC_BLOCK_LINK_MAGIC_NUMBER; in btrfsic_block_link_init()
432 l->ref_cnt = 1; in btrfsic_block_link_init()
433 INIT_LIST_HEAD(&l->node_ref_to); in btrfsic_block_link_init()
434 INIT_LIST_HEAD(&l->node_ref_from); in btrfsic_block_link_init()
435 INIT_LIST_HEAD(&l->collision_resolving_node); in btrfsic_block_link_init()
436 l->block_ref_to = NULL; in btrfsic_block_link_init()
437 l->block_ref_from = NULL; in btrfsic_block_link_init()
442 struct btrfsic_block_link *l; in btrfsic_block_link_alloc() local
444 l = kzalloc(sizeof(*l), GFP_NOFS); in btrfsic_block_link_alloc()
445 if (NULL != l) in btrfsic_block_link_alloc()
446 btrfsic_block_link_init(l); in btrfsic_block_link_alloc()
448 return l; in btrfsic_block_link_alloc()
451 static void btrfsic_block_link_free(struct btrfsic_block_link *l) in btrfsic_block_link_free() argument
453 BUG_ON(!(NULL == l || BTRFSIC_BLOCK_LINK_MAGIC_NUMBER == l->magic_num)); in btrfsic_block_link_free()
454 kfree(l); in btrfsic_block_link_free()
541 struct btrfsic_block_link *l, in btrfsic_block_link_hashtable_add() argument
545 (((unsigned int)(l->block_ref_to->dev_bytenr >> 16)) ^ in btrfsic_block_link_hashtable_add()
546 ((unsigned int)(l->block_ref_from->dev_bytenr >> 16)) ^ in btrfsic_block_link_hashtable_add()
547 ((unsigned int)((uintptr_t)l->block_ref_to->dev_state->bdev)) ^ in btrfsic_block_link_hashtable_add()
548 ((unsigned int)((uintptr_t)l->block_ref_from->dev_state->bdev))) in btrfsic_block_link_hashtable_add()
551 BUG_ON(NULL == l->block_ref_to); in btrfsic_block_link_hashtable_add()
552 BUG_ON(NULL == l->block_ref_from); in btrfsic_block_link_hashtable_add()
553 list_add(&l->collision_resolving_node, h->table + hashval); in btrfsic_block_link_hashtable_add()
556 static void btrfsic_block_link_hashtable_remove(struct btrfsic_block_link *l) in btrfsic_block_link_hashtable_remove() argument
558 list_del(&l->collision_resolving_node); in btrfsic_block_link_hashtable_remove()
574 struct btrfsic_block_link *l; in btrfsic_block_link_hashtable_lookup() local
576 list_for_each_entry(l, h->table + hashval, collision_resolving_node) { in btrfsic_block_link_hashtable_lookup()
577 BUG_ON(NULL == l->block_ref_to); in btrfsic_block_link_hashtable_lookup()
578 BUG_ON(NULL == l->block_ref_from); in btrfsic_block_link_hashtable_lookup()
579 if (l->block_ref_to->dev_state->bdev == bdev_ref_to && in btrfsic_block_link_hashtable_lookup()
580 l->block_ref_to->dev_bytenr == dev_bytenr_ref_to && in btrfsic_block_link_hashtable_lookup()
581 l->block_ref_from->dev_state->bdev == bdev_ref_from && in btrfsic_block_link_hashtable_lookup()
582 l->block_ref_from->dev_bytenr == dev_bytenr_ref_from) in btrfsic_block_link_hashtable_lookup()
583 return l; in btrfsic_block_link_hashtable_lookup()
712 struct btrfsic_block_link *l; in btrfsic_process_superblock() local
731 l = btrfsic_block_link_hashtable_lookup( in btrfsic_process_superblock()
738 BUG_ON(NULL == l); in btrfsic_process_superblock()
882 struct btrfsic_block_link *l; in btrfsic_process_superblock_dev_mirror() local
906 l = btrfsic_block_link_lookup_or_add( in btrfsic_process_superblock_dev_mirror()
911 if (NULL == l) { in btrfsic_process_superblock_dev_mirror()
1243 struct btrfsic_block_link *l; in btrfsic_create_link_to_next_block() local
1286 l = NULL; in btrfsic_create_link_to_next_block()
1309 l = btrfsic_block_link_hashtable_lookup( in btrfsic_create_link_to_next_block()
1318 if (NULL == l) { in btrfsic_create_link_to_next_block()
1319 l = btrfsic_block_link_alloc(); in btrfsic_create_link_to_next_block()
1320 if (NULL == l) { in btrfsic_create_link_to_next_block()
1328 l->block_ref_to = next_block; in btrfsic_create_link_to_next_block()
1329 l->block_ref_from = block; in btrfsic_create_link_to_next_block()
1330 l->ref_cnt = 1; in btrfsic_create_link_to_next_block()
1331 l->parent_generation = parent_generation; in btrfsic_create_link_to_next_block()
1334 btrfsic_print_add_link(state, l); 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()
1337 list_add(&l->node_ref_from, &next_block->ref_from_list); in btrfsic_create_link_to_next_block()
1339 btrfsic_block_link_hashtable_add(l, in btrfsic_create_link_to_next_block()
1344 l->ref_cnt++; in btrfsic_create_link_to_next_block()
1345 l->parent_generation = parent_generation; in btrfsic_create_link_to_next_block()
1347 btrfsic_print_add_link(state, l); in btrfsic_create_link_to_next_block()
1382 struct btrfsic_block_link *l; in btrfsic_handle_extent_data() local
1499 l = btrfsic_block_link_lookup_or_add(state, in btrfsic_handle_extent_data()
1504 if (NULL == l) in btrfsic_handle_extent_data()
1668 const struct btrfsic_block_link *l; in btrfsic_dump_database() local
1675 list_for_each_entry(l, &b_all->ref_to_list, node_ref_to) { in btrfsic_dump_database()
1680 l->ref_cnt, in btrfsic_dump_database()
1681 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_dump_database()
1682 l->block_ref_to->logical_bytenr, in btrfsic_dump_database()
1683 l->block_ref_to->dev_state->name, in btrfsic_dump_database()
1684 l->block_ref_to->dev_bytenr, in btrfsic_dump_database()
1685 l->block_ref_to->mirror_num); in btrfsic_dump_database()
1688 list_for_each_entry(l, &b_all->ref_from_list, node_ref_from) { in btrfsic_dump_database()
1693 l->ref_cnt, in btrfsic_dump_database()
1694 btrfsic_get_block_type(state, l->block_ref_from), in btrfsic_dump_database()
1695 l->block_ref_from->logical_bytenr, in btrfsic_dump_database()
1696 l->block_ref_from->dev_state->name, in btrfsic_dump_database()
1697 l->block_ref_from->dev_bytenr, in btrfsic_dump_database()
1698 l->block_ref_from->mirror_num); in btrfsic_dump_database()
1774 struct btrfsic_block_link *l, *tmp; in btrfsic_process_written_block() local
1879 list_for_each_entry_safe(l, tmp, &block->ref_to_list, in btrfsic_process_written_block()
1882 btrfsic_print_rem_link(state, l); in btrfsic_process_written_block()
1883 l->ref_cnt--; in btrfsic_process_written_block()
1884 if (0 == l->ref_cnt) { in btrfsic_process_written_block()
1885 list_del(&l->node_ref_to); in btrfsic_process_written_block()
1886 list_del(&l->node_ref_from); in btrfsic_process_written_block()
1887 btrfsic_block_link_hashtable_remove(l); in btrfsic_process_written_block()
1888 btrfsic_block_link_free(l); in btrfsic_process_written_block()
2220 struct btrfsic_block_link *l; in btrfsic_process_written_superblock() local
2299 l = btrfsic_block_link_lookup_or_add( in btrfsic_process_written_superblock()
2306 if (NULL == l) in btrfsic_process_written_superblock()
2321 const struct btrfsic_block_link *l; in btrfsic_check_all_ref_blocks() local
2348 list_for_each_entry(l, &block->ref_to_list, node_ref_to) { in btrfsic_check_all_ref_blocks()
2355 l->ref_cnt, in btrfsic_check_all_ref_blocks()
2356 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2357 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2358 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2359 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2360 l->block_ref_to->mirror_num); in btrfsic_check_all_ref_blocks()
2361 if (l->block_ref_to->never_written) { in btrfsic_check_all_ref_blocks()
2363 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2364 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2365 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2366 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2367 l->block_ref_to->mirror_num); in btrfsic_check_all_ref_blocks()
2369 } else if (!l->block_ref_to->is_iodone) { in btrfsic_check_all_ref_blocks()
2371 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2372 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2373 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2374 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2375 l->block_ref_to->mirror_num); in btrfsic_check_all_ref_blocks()
2377 } else if (l->block_ref_to->iodone_w_error) { in btrfsic_check_all_ref_blocks()
2379 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2380 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2381 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2382 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2383 l->block_ref_to->mirror_num); in btrfsic_check_all_ref_blocks()
2385 } else if (l->parent_generation != in btrfsic_check_all_ref_blocks()
2386 l->block_ref_to->generation && in btrfsic_check_all_ref_blocks()
2388 l->parent_generation && in btrfsic_check_all_ref_blocks()
2390 l->block_ref_to->generation) { in btrfsic_check_all_ref_blocks()
2392 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2393 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2394 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2395 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2396 l->block_ref_to->mirror_num, in btrfsic_check_all_ref_blocks()
2397 l->block_ref_to->generation, in btrfsic_check_all_ref_blocks()
2398 l->parent_generation); in btrfsic_check_all_ref_blocks()
2400 } else if (l->block_ref_to->flush_gen > in btrfsic_check_all_ref_blocks()
2401 l->block_ref_to->dev_state->last_flush_gen) { in btrfsic_check_all_ref_blocks()
2403 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_check_all_ref_blocks()
2404 l->block_ref_to->logical_bytenr, in btrfsic_check_all_ref_blocks()
2405 l->block_ref_to->dev_state->name, in btrfsic_check_all_ref_blocks()
2406 l->block_ref_to->dev_bytenr, in btrfsic_check_all_ref_blocks()
2407 l->block_ref_to->mirror_num, block->flush_gen, in btrfsic_check_all_ref_blocks()
2408 l->block_ref_to->dev_state->last_flush_gen); in btrfsic_check_all_ref_blocks()
2411 l->block_ref_to, in btrfsic_check_all_ref_blocks()
2426 const struct btrfsic_block_link *l; in btrfsic_is_block_ref_by_superblock() local
2440 list_for_each_entry(l, &block->ref_from_list, node_ref_from) { in btrfsic_is_block_ref_by_superblock()
2447 l->ref_cnt, in btrfsic_is_block_ref_by_superblock()
2448 btrfsic_get_block_type(state, l->block_ref_from), in btrfsic_is_block_ref_by_superblock()
2449 l->block_ref_from->logical_bytenr, in btrfsic_is_block_ref_by_superblock()
2450 l->block_ref_from->dev_state->name, in btrfsic_is_block_ref_by_superblock()
2451 l->block_ref_from->dev_bytenr, in btrfsic_is_block_ref_by_superblock()
2452 l->block_ref_from->mirror_num); in btrfsic_is_block_ref_by_superblock()
2453 if (l->block_ref_from->is_superblock && in btrfsic_is_block_ref_by_superblock()
2455 l->block_ref_from->dev_bytenr && in btrfsic_is_block_ref_by_superblock()
2457 l->block_ref_from->dev_state->bdev) in btrfsic_is_block_ref_by_superblock()
2460 l->block_ref_from, in btrfsic_is_block_ref_by_superblock()
2470 const struct btrfsic_block_link *l) in btrfsic_print_add_link() argument
2473 l->ref_cnt, in btrfsic_print_add_link()
2474 btrfsic_get_block_type(state, l->block_ref_from), in btrfsic_print_add_link()
2475 l->block_ref_from->logical_bytenr, in btrfsic_print_add_link()
2476 l->block_ref_from->dev_state->name, in btrfsic_print_add_link()
2477 l->block_ref_from->dev_bytenr, l->block_ref_from->mirror_num, in btrfsic_print_add_link()
2478 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_print_add_link()
2479 l->block_ref_to->logical_bytenr, in btrfsic_print_add_link()
2480 l->block_ref_to->dev_state->name, l->block_ref_to->dev_bytenr, in btrfsic_print_add_link()
2481 l->block_ref_to->mirror_num); in btrfsic_print_add_link()
2485 const struct btrfsic_block_link *l) in btrfsic_print_rem_link() argument
2488 l->ref_cnt, in btrfsic_print_rem_link()
2489 btrfsic_get_block_type(state, l->block_ref_from), in btrfsic_print_rem_link()
2490 l->block_ref_from->logical_bytenr, in btrfsic_print_rem_link()
2491 l->block_ref_from->dev_state->name, in btrfsic_print_rem_link()
2492 l->block_ref_from->dev_bytenr, l->block_ref_from->mirror_num, in btrfsic_print_rem_link()
2493 btrfsic_get_block_type(state, l->block_ref_to), in btrfsic_print_rem_link()
2494 l->block_ref_to->logical_bytenr, in btrfsic_print_rem_link()
2495 l->block_ref_to->dev_state->name, l->block_ref_to->dev_bytenr, in btrfsic_print_rem_link()
2496 l->block_ref_to->mirror_num); in btrfsic_print_rem_link()
2523 const struct btrfsic_block_link *l; in btrfsic_dump_tree_sub() local
2558 list_for_each_entry(l, &block->ref_to_list, node_ref_to) { in btrfsic_dump_tree_sub()
2563 if (l->ref_cnt > 1) in btrfsic_dump_tree_sub()
2564 indent_add = sprintf(buf, " %d*--> ", l->ref_cnt); in btrfsic_dump_tree_sub()
2576 btrfsic_dump_tree_sub(state, l->block_ref_to, in btrfsic_dump_tree_sub()
2589 struct btrfsic_block_link *l; in btrfsic_block_link_lookup_or_add() local
2591 l = btrfsic_block_link_hashtable_lookup(next_block_ctx->dev->bdev, in btrfsic_block_link_lookup_or_add()
2596 if (NULL == l) { in btrfsic_block_link_lookup_or_add()
2597 l = btrfsic_block_link_alloc(); in btrfsic_block_link_lookup_or_add()
2598 if (NULL == l) { in btrfsic_block_link_lookup_or_add()
2603 l->block_ref_to = next_block; in btrfsic_block_link_lookup_or_add()
2604 l->block_ref_from = from_block; in btrfsic_block_link_lookup_or_add()
2605 l->ref_cnt = 1; in btrfsic_block_link_lookup_or_add()
2606 l->parent_generation = parent_generation; in btrfsic_block_link_lookup_or_add()
2609 btrfsic_print_add_link(state, l); in btrfsic_block_link_lookup_or_add()
2611 list_add(&l->node_ref_to, &from_block->ref_to_list); in btrfsic_block_link_lookup_or_add()
2612 list_add(&l->node_ref_from, &next_block->ref_from_list); in btrfsic_block_link_lookup_or_add()
2614 btrfsic_block_link_hashtable_add(l, in btrfsic_block_link_lookup_or_add()
2617 l->ref_cnt++; in btrfsic_block_link_lookup_or_add()
2618 l->parent_generation = parent_generation; in btrfsic_block_link_lookup_or_add()
2620 btrfsic_print_add_link(state, l); in btrfsic_block_link_lookup_or_add()
2623 return l; in btrfsic_block_link_lookup_or_add()
3014 struct btrfsic_block_link *l, *tmp; in btrfsic_unmount() local
3016 list_for_each_entry_safe(l, tmp, &b_all->ref_to_list, in btrfsic_unmount()
3019 btrfsic_print_rem_link(state, l); in btrfsic_unmount()
3021 l->ref_cnt--; in btrfsic_unmount()
3022 if (0 == l->ref_cnt) in btrfsic_unmount()
3023 btrfsic_block_link_free(l); in btrfsic_unmount()