Lines Matching refs:slba
1694 static inline uint16_t nvme_check_bounds(NvmeNamespace *ns, uint64_t slba, in nvme_check_bounds() argument
1699 if (unlikely(UINT64_MAX - slba < nlb || slba + nlb > nsze)) { in nvme_check_bounds()
1700 trace_pci_nvme_err_invalid_lba_range(slba, nlb, nsze); in nvme_check_bounds()
1707 static int nvme_block_status_all(NvmeNamespace *ns, uint64_t slba, in nvme_block_status_all() argument
1713 int64_t offset = nvme_l2b(ns, slba); in nvme_block_status_all()
1744 static uint16_t nvme_check_dulbe(NvmeNamespace *ns, uint64_t slba, in nvme_check_dulbe() argument
1750 ret = nvme_block_status_all(ns, slba, nlb, BDRV_BLOCK_DATA); in nvme_check_dulbe()
1765 static inline uint32_t nvme_zone_idx(NvmeNamespace *ns, uint64_t slba) in nvme_zone_idx() argument
1767 return ns->zone_size_log2 > 0 ? slba >> ns->zone_size_log2 : in nvme_zone_idx()
1768 slba / ns->zone_size; in nvme_zone_idx()
1771 static inline NvmeZone *nvme_get_zone_by_slba(NvmeNamespace *ns, uint64_t slba) in nvme_get_zone_by_slba() argument
1773 uint32_t zone_idx = nvme_zone_idx(ns, slba); in nvme_get_zone_by_slba()
1809 uint64_t slba, uint32_t nlb) in nvme_check_zone_write() argument
1822 if (slba < zone->w_ptr || slba + nlb > ezrwa) { in nvme_check_zone_write()
1823 trace_pci_nvme_err_zone_invalid_write(slba, zone->w_ptr); in nvme_check_zone_write()
1827 if (unlikely(slba != zone->w_ptr)) { in nvme_check_zone_write()
1828 trace_pci_nvme_err_write_not_at_wp(slba, zone->d.zslba, in nvme_check_zone_write()
1834 if (unlikely((slba + nlb) > zcap)) { in nvme_check_zone_write()
1835 trace_pci_nvme_err_zone_boundary(slba, nlb, zcap); in nvme_check_zone_write()
1862 static uint16_t nvme_check_zone_read(NvmeNamespace *ns, uint64_t slba, in nvme_check_zone_read() argument
1869 zone = nvme_get_zone_by_slba(ns, slba); in nvme_check_zone_read()
1873 end = slba + nlb; in nvme_check_zone_read()
2089 uint64_t slba; in nvme_finalize_zoned_write() local
2092 slba = le64_to_cpu(rw->slba); in nvme_finalize_zoned_write()
2094 zone = nvme_get_zone_by_slba(ns, slba); in nvme_finalize_zoned_write()
2099 uint64_t elba = slba + nlb - 1; in nvme_finalize_zoned_write()
2199 uint64_t slba = le64_to_cpu(rw->slba); in nvme_rw_cb() local
2201 uint64_t offset = nvme_moff(ns, slba); in nvme_rw_cb()
2243 uint64_t slba = le64_to_cpu(rw->slba); in nvme_verify_cb() local
2268 ctx->mdata.iov.size, slba); in nvme_verify_cb()
2276 prinfo, slba, apptag, appmask, &reftag); in nvme_verify_cb()
2298 uint64_t slba = le64_to_cpu(rw->slba); in nvme_verify_mdata_in_cb() local
2301 uint64_t offset = nvme_moff(ns, slba); in nvme_verify_mdata_in_cb()
2376 uint64_t slba = le64_to_cpu(rw->slba); in nvme_compare_mdata_cb() local
2384 slba, apptag, appmask, &reftag); in nvme_compare_mdata_cb()
2467 uint64_t slba = le64_to_cpu(rw->slba); in nvme_compare_data_cb() local
2470 uint64_t offset = nvme_moff(ns, slba); in nvme_compare_data_cb()
2536 uint64_t slba; in nvme_dsm_md_cb() local
2544 slba = le64_to_cpu(range->slba); in nvme_dsm_md_cb()
2552 ret = nvme_block_status_all(ns, slba, nlb, BDRV_BLOCK_ZERO); in nvme_dsm_md_cb()
2562 iocb->aiocb = blk_aio_pwrite_zeroes(ns->blkconf.blk, nvme_moff(ns, slba), in nvme_dsm_md_cb()
2578 uint64_t slba; in nvme_dsm_cb() local
2594 slba = le64_to_cpu(range->slba); in nvme_dsm_cb()
2597 trace_pci_nvme_dsm_deallocate(slba, nlb); in nvme_dsm_cb()
2604 if (nvme_check_bounds(ns, slba, nlb)) { in nvme_dsm_cb()
2605 trace_pci_nvme_err_invalid_lba_range(slba, nlb, in nvme_dsm_cb()
2610 iocb->aiocb = blk_aio_pdiscard(ns->blkconf.blk, nvme_l2b(ns, slba), in nvme_dsm_cb()
2665 uint64_t slba = le64_to_cpu(rw->slba); in nvme_verify() local
2669 int64_t offset = nvme_l2b(ns, slba); in nvme_verify()
2675 trace_pci_nvme_verify(nvme_cid(req), nvme_nsid(ns), slba, nlb); in nvme_verify()
2678 status = nvme_check_prinfo(ns, prinfo, slba, reftag); in nvme_verify()
2696 status = nvme_check_bounds(ns, slba, nlb); in nvme_verify()
2702 status = nvme_check_dulbe(ns, slba, nlb); in nvme_verify()
2744 uint64_t slba; member
2796 int idx, uint64_t *slba, in nvme_copy_source_range_parse_format0_2() argument
2809 if (slba) { in nvme_copy_source_range_parse_format0_2()
2810 *slba = le64_to_cpu(_ranges[idx].slba); in nvme_copy_source_range_parse_format0_2()
2831 uint64_t *slba, in nvme_copy_source_range_parse_format1_3() argument
2844 if (slba) { in nvme_copy_source_range_parse_format1_3()
2845 *slba = le64_to_cpu(_ranges[idx].slba); in nvme_copy_source_range_parse_format1_3()
2873 uint64_t *slba, uint32_t *nlb, in nvme_copy_source_range_parse() argument
2880 nvme_copy_source_range_parse_format0_2(ranges, idx, slba, nlb, snsid, in nvme_copy_source_range_parse()
2886 nvme_copy_source_range_parse_format1_3(ranges, idx, slba, nlb, snsid, in nvme_copy_source_range_parse()
2937 iocb->slba += nlb; in nvme_copy_out_completed_cb()
2964 iocb->aiocb = blk_aio_pwritev(dns->blkconf.blk, nvme_moff(dns, iocb->slba), in nvme_copy_out_cb()
2983 uint64_t slba; in nvme_copy_in_completed_cb() local
2997 nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &slba, in nvme_copy_in_completed_cb()
3000 trace_pci_nvme_copy_out(iocb->slba, nlb); in nvme_copy_in_completed_cb()
3012 status = nvme_dif_mangle_mdata(sns, mbounce, mlen, slba); in nvme_copy_in_completed_cb()
3017 slba, apptag, appmask, &reftag); in nvme_copy_in_completed_cb()
3034 status = nvme_check_prinfo(dns, prinfow, iocb->slba, iocb->reftag); in nvme_copy_in_completed_cb()
3043 prinfow, iocb->slba, apptag, appmask, in nvme_copy_in_completed_cb()
3051 status = nvme_check_bounds(dns, iocb->slba, nlb); in nvme_copy_in_completed_cb()
3057 status = nvme_check_zone_write(dns, iocb->zone, iocb->slba, nlb); in nvme_copy_in_completed_cb()
3073 iocb->aiocb = blk_aio_pwritev(dns->blkconf.blk, nvme_l2b(dns, iocb->slba), in nvme_copy_in_completed_cb()
3089 uint64_t slba; in nvme_copy_in_cb() local
3096 nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &slba, in nvme_copy_in_cb()
3103 iocb->aiocb = blk_aio_preadv(sns->blkconf.blk, nvme_moff(sns, slba), in nvme_copy_in_cb()
3178 uint64_t slba; in nvme_do_copy() local
3195 &slba, &nlb, &snsid, NULL, NULL, NULL); in nvme_do_copy()
3208 if (((slba + nlb) > iocb->slba) && in nvme_do_copy()
3209 ((slba + nlb) < (iocb->slba + iocb->tcl))) { in nvme_do_copy()
3216 &slba, &nlb, NULL, NULL, NULL, NULL); in nvme_do_copy()
3274 trace_pci_nvme_copy_source_range(slba, nlb); in nvme_do_copy()
3281 status = nvme_check_bounds(sns, slba, nlb); in nvme_do_copy()
3287 status = nvme_check_dulbe(sns, slba, nlb); in nvme_do_copy()
3294 status = nvme_check_zone_read(sns, slba, nlb); in nvme_do_copy()
3310 iocb->aiocb = blk_aio_preadv(sns->blkconf.blk, nvme_l2b(sns, slba), in nvme_do_copy()
3368 iocb->slba = le64_to_cpu(copy->sdlba); in nvme_copy()
3371 iocb->zone = nvme_get_zone_by_slba(ns, iocb->slba); in nvme_copy()
3416 uint64_t slba = le64_to_cpu(rw->slba); in nvme_compare() local
3421 int64_t offset = nvme_l2b(ns, slba); in nvme_compare()
3425 trace_pci_nvme_compare(nvme_cid(req), nvme_nsid(ns), slba, nlb); in nvme_compare()
3444 status = nvme_check_bounds(ns, slba, nlb); in nvme_compare()
3450 status = nvme_check_dulbe(ns, slba, nlb); in nvme_compare()
3608 uint64_t slba = le64_to_cpu(rw->slba); in nvme_read() local
3629 trace_pci_nvme_read(nvme_cid(req), nvme_nsid(ns), nlb, mapped_size, slba); in nvme_read()
3636 status = nvme_check_bounds(ns, slba, nlb); in nvme_read()
3642 status = nvme_check_zone_read(ns, slba, nlb); in nvme_read()
3644 trace_pci_nvme_err_zone_read_not_ok(slba, nlb, status); in nvme_read()
3650 status = nvme_check_dulbe(ns, slba, nlb); in nvme_read()
3665 data_offset = nvme_l2b(ns, slba); in nvme_read()
3677 static void nvme_do_write_fdp(NvmeCtrl *n, NvmeRequest *req, uint64_t slba, in nvme_do_write_fdp() argument
3717 uint64_t slba = le64_to_cpu(rw->slba); in nvme_do_write() local
3742 nvme_nsid(ns), nlb, mapped_size, slba); in nvme_do_write()
3751 status = nvme_check_bounds(ns, slba, nlb); in nvme_do_write()
3757 zone = nvme_get_zone_by_slba(ns, slba); in nvme_do_write()
3767 if (unlikely(slba != zone->d.zslba)) { in nvme_do_write()
3768 trace_pci_nvme_err_append_not_at_start(slba, zone->d.zslba); in nvme_do_write()
3779 slba = zone->w_ptr; in nvme_do_write()
3780 rw->slba = cpu_to_le64(slba); in nvme_do_write()
3781 res->slba = cpu_to_le64(slba); in nvme_do_write()
3794 rw->reftag = cpu_to_le32(reftag + (slba - zone->d.zslba)); in nvme_do_write()
3808 status = nvme_check_zone_write(ns, zone, slba, nlb); in nvme_do_write()
3822 nvme_do_write_fdp(n, req, slba, nlb); in nvme_do_write()
3825 data_offset = nvme_l2b(ns, slba); in nvme_do_write()
3869 uint64_t *slba, uint32_t *zone_idx) in nvme_get_mgmt_zone_slba_idx() argument
3879 *slba = ((uint64_t)dw11) << 32 | dw10; in nvme_get_mgmt_zone_slba_idx()
3880 if (unlikely(*slba >= ns->id_ns.nsze)) { in nvme_get_mgmt_zone_slba_idx()
3881 trace_pci_nvme_err_invalid_lba_range(*slba, 0, ns->id_ns.nsze); in nvme_get_mgmt_zone_slba_idx()
3882 *slba = 0; in nvme_get_mgmt_zone_slba_idx()
3886 *zone_idx = nvme_zone_idx(ns, *slba); in nvme_get_mgmt_zone_slba_idx()
4230 uint64_t slba = 0; in nvme_zone_mgmt_send() local
4242 status = nvme_get_mgmt_zone_slba_idx(ns, &req->cmd, &slba, &zone_idx); in nvme_zone_mgmt_send()
4249 if (slba != zone->d.zslba && action != NVME_ZONE_ACTION_ZRWA_FLUSH) { in nvme_zone_mgmt_send()
4250 trace_pci_nvme_err_unaligned_zone_cmd(action, slba, zone->d.zslba); in nvme_zone_mgmt_send()
4260 trace_pci_nvme_open_zone(slba, zone_idx, all); in nvme_zone_mgmt_send()
4268 trace_pci_nvme_close_zone(slba, zone_idx, all); in nvme_zone_mgmt_send()
4276 trace_pci_nvme_finish_zone(slba, zone_idx, all); in nvme_zone_mgmt_send()
4281 trace_pci_nvme_reset_zone(slba, zone_idx, all); in nvme_zone_mgmt_send()
4301 trace_pci_nvme_offline_zone(slba, zone_idx, all); in nvme_zone_mgmt_send()
4306 trace_pci_nvme_set_descriptor_extension(slba, zone_idx); in nvme_zone_mgmt_send()
4329 return nvme_zone_mgmt_send_zrwa_flush(n, zone, slba, req); in nvme_zone_mgmt_send()
4337 trace_pci_nvme_err_invalid_zone_state_transition(action, slba, in nvme_zone_mgmt_send()
4383 uint64_t slba; in nvme_zone_mgmt_recv() local
4393 status = nvme_get_mgmt_zone_slba_idx(ns, cmd, &slba, &zone_idx); in nvme_zone_mgmt_recv()
7419 uint64_t slba = le64_to_cpu(rw->slba); in nvme_atomic_write_check() local
7421 uint64_t elba = slba + nlb; in nvme_atomic_write_check()
7455 req_slba = le64_to_cpu(req_rw->slba); in nvme_atomic_write_check()
7460 if ((elba >= req_slba) && (slba <= req_elba)) { in nvme_atomic_write_check()
7465 (slba <= req_elba))) { in nvme_atomic_write_check()