Lines Matching full:dbi

182 	uint32_t *dbi;  member
486 #define tcmu_cmd_set_dbi(cmd, index) ((cmd)->dbi[(cmd)->dbi_cur++] = (index))
487 #define tcmu_cmd_get_dbi(cmd) ((cmd)->dbi[(cmd)->dbi_cur++])
495 clear_bit(tcmu_cmd->dbi[i], udev->data_bitmap); in tcmu_cmd_free_data()
503 int ret, dbi; in tcmu_get_empty_block() local
505 dbi = find_first_zero_bit(udev->data_bitmap, udev->dbi_thresh); in tcmu_get_empty_block()
506 if (dbi == udev->dbi_thresh) in tcmu_get_empty_block()
509 page = radix_tree_lookup(&udev->data_blocks, dbi); in tcmu_get_empty_block()
520 ret = radix_tree_insert(&udev->data_blocks, dbi, page); in tcmu_get_empty_block()
525 if (dbi > udev->dbi_max) in tcmu_get_empty_block()
526 udev->dbi_max = dbi; in tcmu_get_empty_block()
528 set_bit(dbi, udev->data_bitmap); in tcmu_get_empty_block()
529 tcmu_cmd_set_dbi(tcmu_cmd, dbi); in tcmu_get_empty_block()
531 if (dbi != prev_dbi + 1) in tcmu_get_empty_block()
534 return dbi; in tcmu_get_empty_block()
545 /* start value of dbi + 1 must not be a valid dbi */ in tcmu_get_empty_blocks()
546 int dbi = -2; in tcmu_get_empty_blocks() local
550 dbi = tcmu_get_empty_block(udev, tcmu_cmd, dbi, &iov_cnt); in tcmu_get_empty_blocks()
551 if (dbi < 0) in tcmu_get_empty_blocks()
558 tcmu_get_block_page(struct tcmu_dev *udev, uint32_t dbi) in tcmu_get_block_page() argument
560 return radix_tree_lookup(&udev->data_blocks, dbi); in tcmu_get_block_page()
567 kfree(tcmu_cmd->dbi); in tcmu_free_cmd()
591 /* Get the next dbi */ in new_block_to_iov()
592 int dbi = tcmu_cmd_get_dbi(cmd); in new_block_to_iov() local
601 if (dbi != prev_dbi + 1) { in new_block_to_iov()
602 /* dbi is not next to previous dbi, so start new iov */ in new_block_to_iov()
607 (udev->data_off + dbi * DATA_BLOCK_SIZE); in new_block_to_iov()
611 return dbi; in new_block_to_iov()
617 /* start value of dbi + 1 must not be a valid dbi */ in tcmu_setup_iovs()
618 int dbi = -2; in tcmu_setup_iovs() local
622 dbi = new_block_to_iov(udev, cmd, iov, dbi, &data_length); in tcmu_setup_iovs()
640 tcmu_cmd->dbi = kcalloc(tcmu_cmd->dbi_cnt, sizeof(uint32_t), in tcmu_alloc_cmd()
642 if (!tcmu_cmd->dbi) { in tcmu_alloc_cmd()
695 /* start value of dbi + 1 must not be a valid dbi */ in scatter_data_area()
696 int i, dbi = -2; in scatter_data_area() local
714 /* get next dbi and add to IOVs */ in scatter_data_area()
715 dbi = new_block_to_iov(udev, tcmu_cmd, iov, dbi, in scatter_data_area()
717 page = tcmu_get_block_page(udev, dbi); in scatter_data_area()
744 int i, dbi; in gather_data_area() local
779 dbi = tcmu_cmd_get_dbi(cmd); in gather_data_area()
780 page = tcmu_get_block_page(udev, dbi); in gather_data_area()
1668 static struct page *tcmu_try_get_block_page(struct tcmu_dev *udev, uint32_t dbi) in tcmu_try_get_block_page() argument
1673 page = tcmu_get_block_page(udev, dbi); in tcmu_try_get_block_page()
1683 pr_err("Invalid addr to data block mapping (dbi %u) on device %s\n", in tcmu_try_get_block_page()
1684 dbi, udev->name); in tcmu_try_get_block_page()
1714 uint32_t dbi; in tcmu_vma_fault() local
1717 dbi = (offset - udev->data_off) / DATA_BLOCK_SIZE; in tcmu_vma_fault()
1718 page = tcmu_try_get_block_page(udev, dbi); in tcmu_vma_fault()