Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4608e917de | ||
|
f55ffa8b57 | ||
|
f3cedcc7fe | ||
|
44a43939e8 | ||
|
9fca71f514 | ||
|
bbb2989c26 | ||
|
4baae265ca | ||
|
ec611eb485 |
25
CHANGELOG.md
25
CHANGELOG.md
@ -1,5 +1,30 @@
|
||||
# Changelog
|
||||
|
||||
## v18.07.1:
|
||||
|
||||
### NVMe
|
||||
|
||||
Added a quirk to handle QEMU emulated NVMe SSDs, which report an Intel
|
||||
vendor ID but don't support Intel vendor-specific log pages.
|
||||
|
||||
### Vagrant
|
||||
|
||||
Modified scripts/vagrant/create_vbox.sh to run as a bash script, since
|
||||
it explicitly requires bash functionality.
|
||||
|
||||
### bdev
|
||||
|
||||
Fixed a bug that resulted in incorrect disk utilization reporting.
|
||||
|
||||
Fixed a crash when the bdev layer ran out of free bdev I/O request objects.
|
||||
|
||||
Fixed a race condition between closing the final bdev descriptor
|
||||
and unregistering the bdev.
|
||||
|
||||
### DPDK
|
||||
|
||||
Updated the DPDK submodule to be based off of DPDK 18.05.1.
|
||||
|
||||
## v18.07:
|
||||
|
||||
### bdev
|
||||
|
2
dpdk
2
dpdk
@ -1 +1 @@
|
||||
Subproject commit b6ae5bcff6ca09a7e1536eaa449aa6f4e704a6d9
|
||||
Subproject commit b20a027e88b5c3b54498a62c075865656efb86e5
|
@ -54,7 +54,7 @@
|
||||
* Patch level is incremented on maintenance branch releases and reset to 0 for each
|
||||
* new major.minor release.
|
||||
*/
|
||||
#define SPDK_VERSION_PATCH 0
|
||||
#define SPDK_VERSION_PATCH 1
|
||||
|
||||
/**
|
||||
* Version string suffix.
|
||||
|
@ -420,7 +420,7 @@ spdk_bdev_io_put_buf(struct spdk_bdev_io *bdev_io)
|
||||
tmp = STAILQ_FIRST(stailq);
|
||||
|
||||
aligned_buf = (void *)(((uintptr_t)buf + 511) & ~511UL);
|
||||
spdk_bdev_io_set_buf(bdev_io, aligned_buf, tmp->internal.buf_len);
|
||||
spdk_bdev_io_set_buf(tmp, aligned_buf, tmp->internal.buf_len);
|
||||
|
||||
STAILQ_REMOVE_HEAD(stailq, internal.buf_link);
|
||||
tmp->internal.buf = buf;
|
||||
@ -1661,6 +1661,7 @@ _calculate_measured_qd_cpl(struct spdk_io_channel_iter *i, int status)
|
||||
bdev->internal.measured_queue_depth = bdev->internal.temporary_queue_depth;
|
||||
|
||||
if (bdev->internal.measured_queue_depth) {
|
||||
bdev->internal.io_time += bdev->internal.period;
|
||||
bdev->internal.weighted_io_time += bdev->internal.period * bdev->internal.measured_queue_depth;
|
||||
}
|
||||
}
|
||||
|
@ -78,6 +78,10 @@ ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_bus_pci.*))
|
||||
DPDK_LIB_LIST += rte_bus_pci
|
||||
endif
|
||||
|
||||
ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_kvargs.*))
|
||||
DPDK_LIB_LIST += rte_kvargs
|
||||
endif
|
||||
|
||||
DPDK_LIB = $(DPDK_LIB_LIST:%=$(DPDK_ABS_DIR)/lib/lib%$(DPDK_LIB_EXT))
|
||||
|
||||
# SPDK memory registration requires experimental (deprecated) rte_memory API for DPDK 18.05
|
||||
|
@ -52,7 +52,11 @@ static struct rte_pci_id nvme_pci_driver_id[] = {
|
||||
|
||||
static struct spdk_pci_enum_ctx g_nvme_pci_drv = {
|
||||
.driver = {
|
||||
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
|
||||
.drv_flags = RTE_PCI_DRV_NEED_MAPPING
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(18, 8, 0, 0)
|
||||
| RTE_PCI_DRV_WC_ACTIVATE
|
||||
#endif
|
||||
,
|
||||
.id_table = nvme_pci_driver_id,
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
||||
.probe = spdk_pci_device_init,
|
||||
|
@ -43,7 +43,11 @@ static struct rte_pci_id virtio_pci_driver_id[] = {
|
||||
|
||||
static struct spdk_pci_enum_ctx g_virtio_pci_drv = {
|
||||
.driver = {
|
||||
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
|
||||
.drv_flags = RTE_PCI_DRV_NEED_MAPPING
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(18, 8, 0, 0)
|
||||
| RTE_PCI_DRV_WC_ACTIVATE
|
||||
#endif
|
||||
,
|
||||
.id_table = virtio_pci_driver_id,
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
||||
.probe = spdk_pci_device_init,
|
||||
|
@ -403,7 +403,7 @@ nvme_ctrlr_set_supported_log_pages(struct spdk_nvme_ctrlr *ctrlr)
|
||||
if (ctrlr->cdata.lpa.celp) {
|
||||
ctrlr->log_page_supported[SPDK_NVME_LOG_COMMAND_EFFECTS_LOG] = true;
|
||||
}
|
||||
if (ctrlr->cdata.vid == SPDK_PCI_VID_INTEL) {
|
||||
if (ctrlr->cdata.vid == SPDK_PCI_VID_INTEL && !(ctrlr->quirks & NVME_INTEL_QUIRK_NO_LOG_PAGES)) {
|
||||
nvme_ctrlr_set_intel_support_log_pages(ctrlr);
|
||||
}
|
||||
}
|
||||
|
@ -107,6 +107,13 @@ extern pid_t g_spdk_nvme_pid;
|
||||
*/
|
||||
#define NVME_QUIRK_OCSSD 0x80
|
||||
|
||||
/*
|
||||
* The controller has an Intel vendor ID but does not support Intel vendor-specific
|
||||
* log pages. This is primarily for QEMU emulated SSDs which report an Intel vendor
|
||||
* ID but do not support these log pages.
|
||||
*/
|
||||
#define NVME_INTEL_QUIRK_NO_LOG_PAGES 0x100
|
||||
|
||||
#define NVME_MAX_ASYNC_EVENTS (8)
|
||||
|
||||
#define NVME_MIN_TIMEOUT_PERIOD (5)
|
||||
|
@ -76,7 +76,8 @@ static const struct nvme_quirk nvme_quirks[] = {
|
||||
NVME_QUIRK_DELAY_AFTER_QUEUE_ALLOC
|
||||
},
|
||||
{ {SPDK_PCI_VID_INTEL, 0x5845, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_IDENTIFY_CNS
|
||||
NVME_QUIRK_IDENTIFY_CNS |
|
||||
NVME_INTEL_QUIRK_NO_LOG_PAGES
|
||||
},
|
||||
{ {SPDK_PCI_VID_CNEXLABS, 0x1f1f, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_IDENTIFY_CNS |
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh -e
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# create_vbox.sh
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user