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
|
# 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:
|
## v18.07:
|
||||||
|
|
||||||
### bdev
|
### 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
|
* Patch level is incremented on maintenance branch releases and reset to 0 for each
|
||||||
* new major.minor release.
|
* new major.minor release.
|
||||||
*/
|
*/
|
||||||
#define SPDK_VERSION_PATCH 0
|
#define SPDK_VERSION_PATCH 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Version string suffix.
|
* Version string suffix.
|
||||||
|
@ -420,7 +420,7 @@ spdk_bdev_io_put_buf(struct spdk_bdev_io *bdev_io)
|
|||||||
tmp = STAILQ_FIRST(stailq);
|
tmp = STAILQ_FIRST(stailq);
|
||||||
|
|
||||||
aligned_buf = (void *)(((uintptr_t)buf + 511) & ~511UL);
|
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);
|
STAILQ_REMOVE_HEAD(stailq, internal.buf_link);
|
||||||
tmp->internal.buf = buf;
|
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;
|
bdev->internal.measured_queue_depth = bdev->internal.temporary_queue_depth;
|
||||||
|
|
||||||
if (bdev->internal.measured_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;
|
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
|
DPDK_LIB_LIST += rte_bus_pci
|
||||||
endif
|
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))
|
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
|
# 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 = {
|
static struct spdk_pci_enum_ctx g_nvme_pci_drv = {
|
||||||
.driver = {
|
.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,
|
.id_table = nvme_pci_driver_id,
|
||||||
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
||||||
.probe = spdk_pci_device_init,
|
.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 = {
|
static struct spdk_pci_enum_ctx g_virtio_pci_drv = {
|
||||||
.driver = {
|
.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,
|
.id_table = virtio_pci_driver_id,
|
||||||
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
|
||||||
.probe = spdk_pci_device_init,
|
.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) {
|
if (ctrlr->cdata.lpa.celp) {
|
||||||
ctrlr->log_page_supported[SPDK_NVME_LOG_COMMAND_EFFECTS_LOG] = true;
|
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);
|
nvme_ctrlr_set_intel_support_log_pages(ctrlr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,13 @@ extern pid_t g_spdk_nvme_pid;
|
|||||||
*/
|
*/
|
||||||
#define NVME_QUIRK_OCSSD 0x80
|
#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_MAX_ASYNC_EVENTS (8)
|
||||||
|
|
||||||
#define NVME_MIN_TIMEOUT_PERIOD (5)
|
#define NVME_MIN_TIMEOUT_PERIOD (5)
|
||||||
|
@ -76,7 +76,8 @@ static const struct nvme_quirk nvme_quirks[] = {
|
|||||||
NVME_QUIRK_DELAY_AFTER_QUEUE_ALLOC
|
NVME_QUIRK_DELAY_AFTER_QUEUE_ALLOC
|
||||||
},
|
},
|
||||||
{ {SPDK_PCI_VID_INTEL, 0x5845, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
{ {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},
|
{ {SPDK_PCI_VID_CNEXLABS, 0x1f1f, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||||
NVME_QUIRK_IDENTIFY_CNS |
|
NVME_QUIRK_IDENTIFY_CNS |
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh -e
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# create_vbox.sh
|
# create_vbox.sh
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user