#
1bce7cd8 |
| 14-Jun-2024 |
Warner Losh <imp@FreeBSD.org> |
nvme: Add Linux copatible ioctls
Add the NVME_IOCTL_ID, NVME_IOCTL_ADMIN_CMD, and NVME_IOCTL_IO_CMD Linux compatible ioctls. These may be run on either an I/O (ns) dev or a nvme (admin) dev. Linux a
nvme: Add Linux copatible ioctls
Add the NVME_IOCTL_ID, NVME_IOCTL_ADMIN_CMD, and NVME_IOCTL_IO_CMD Linux compatible ioctls. These may be run on either an I/O (ns) dev or a nvme (admin) dev. Linux allows both on either device, and programs use this and aren't careful about having the right device open. Emulate this feature, and implement these ioctls. The data is passed in into the kernel in host byte order (not converted to le). Results are returned in host order.
The timeout field is ignore, and the metadata and metadata_len fields must be zero.
The addr field can be null, even when the data_len is non zero (FreeBSD's ioctl interface prohibits this, Linux's just ignores the inconsistency).
Only the cdw10 is returned from the command: the status is not returned in 'result' field. XXX need to verify that this is what Linux does on an error signaled from the drive.
No external include file is yet available for this: most programs that call this interface either use a linux-specific path <linux/nvme.h> or have their own private copy of the data. It's unclear the best thing to do.
Also, create a /dev/nvmeXnY as an alias for /dev/nvmeXnsY.
These changes allow a native build of nvme-cli to work for everything that doesn't depend on sysfs entries in /sys, calls that use metadata, send / receive drive data and sed functionality not in our nvme driver.
Sponsored by: Netflix Co-Authored-by: Chuck Tuffli <chuck@freebsd.org> Reviewed by: chuck Differential Revision: https://reviews.freebsd.org/D45415
show more ...
|
#
80b42329 |
| 14-Jun-2024 |
Alexander Motin <mav@FreeBSD.org> |
nvme: Fix panic on detach after ce75bfcac9cfe
MFC after: 2 weeks
|
#
ce75bfca |
| 01-Jun-2024 |
Chuck Tuffli <chuck@FreeBSD.org> |
nvme: Change namespace device name
Changes the device name for NVMe and NVMe-oF namespaces from using "ns" to "n" to be more compatible with other operating systems. For example, a device which was
nvme: Change namespace device name
Changes the device name for NVMe and NVMe-oF namespaces from using "ns" to "n" to be more compatible with other operating systems. For example, a device which was previously /dev/nvme0ns1 is now /dev/nvme0n1.
Preserves the existing functionality by creating alias from nvmeXnY to nvmeXnsY.
Reviewed by: imp MFC after: 1 month Relnotes: yes Differential Revision: https://reviews.freebsd.org/D45414
show more ...
|
#
d09ee08f |
| 24-May-2024 |
Warner Losh <imp@FreeBSD.org> |
nvme: Count number of alginment splits
When possible, we split up I/Os to NVMe drives that advertise a preferred alignment. Add a counter for this.
Sponsored by: Netflix Reviewed by: chuck, mav D
nvme: Count number of alginment splits
When possible, we split up I/Os to NVMe drives that advertise a preferred alignment. Add a counter for this.
Sponsored by: Netflix Reviewed by: chuck, mav Differential Revision: https://reviews.freebsd.org/D45311
show more ...
|
#
da4230af |
| 13-May-2024 |
John Baldwin <jhb@FreeBSD.org> |
nvme/f: Use strlcpy instead of strncpy + manual string termination
Reviewed by: dab, imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D45153
|
#
5650bd3f |
| 29-Jan-2024 |
John Baldwin <jhb@FreeBSD.org> |
nvme: Use the NVMEF macro to construct fields
Reviewed by: chuck, imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43605
|
#
8488fc41 |
| 29-Jan-2024 |
John Baldwin <jhb@FreeBSD.org> |
nvme: Use the NVMEM macro instead of expanded versions
A few of these omitted a shift of 0, but this is more consistent.
Reviewed by: chuck Sponsored by: Chelsio Communications Differential Revisio
nvme: Use the NVMEM macro instead of expanded versions
A few of these omitted a shift of 0, but this is more consistent.
Reviewed by: chuck Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43602
show more ...
|
#
479680f2 |
| 29-Jan-2024 |
John Baldwin <jhb@FreeBSD.org> |
nvme: Use the NVMEV macro instead of expanded versions
Reviewed by: chuck Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D43595
|
#
fdafd315 |
| 24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remov
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
show more ...
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
4d846d26 |
| 10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD
The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause.
Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
show more ...
|
#
c5ed67dc |
| 15-Apr-2022 |
Warner Losh <imp@FreeBSD.org> |
nvme: Prefer nvme_printf to printf when reporting formatting error
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D34872
|
#
a7218e7a |
| 15-Apr-2022 |
Warner Losh <imp@FreeBSD.org> |
nvme: Fix old intel alignment size
The intel raid stripe alignment parameter is based on CAP.MPSMIN, so use that directly now that we have it available.
Sponsored by: Netflix Reviewed by: chuck D
nvme: Fix old intel alignment size
The intel raid stripe alignment parameter is based on CAP.MPSMIN, so use that directly now that we have it available.
Sponsored by: Netflix Reviewed by: chuck Differential Revision: https://reviews.freebsd.org/D34866
show more ...
|
#
053f8ed6 |
| 06-Dec-2021 |
Warner Losh <imp@FreeBSD.org> |
nvme: Move to a quirk for the Intel alignment data
Prior to NVMe 1.3, Intel produced a series of drives that had performance alignment data in the vendor specific space since no standard had been de
nvme: Move to a quirk for the Intel alignment data
Prior to NVMe 1.3, Intel produced a series of drives that had performance alignment data in the vendor specific space since no standard had been defined. Move testing the versions to a quick so the NVMe NS code doesn't know about PCI device info.
Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D33284
show more ...
|
#
e3bcd07d |
| 06-Jul-2021 |
Alexander Motin <mav@FreeBSD.org> |
nvme(4): Report NPWA before NPWG as stripesize.
New Samsung 980 SSDs report Namespace Preferred Write Alignment of 8 (4KB) and Namespace Preferred Write Granularity of 32 (16KB). My quick tests show
nvme(4): Report NPWA before NPWG as stripesize.
New Samsung 980 SSDs report Namespace Preferred Write Alignment of 8 (4KB) and Namespace Preferred Write Granularity of 32 (16KB). My quick tests show that 16KB is a minimal sequential write size when the SSD reaches peak IOPS, so writing much less is very slow. But writing slightly less or slightly more does not change much, so it seems not so much a size granularity as minimum I/O size.
Thinking about different stripesize consumers: - Partition alignment should be based on NPWA by definition. - ZFS ashift in part of forcing alignment of all I/Os should also be based on NPWA. In part of forcing size granularity, if really needed, it may be set to NPWG, but too big value can make ZFS too space-inefficient, and the 16KB is actually the biggest supported value there now. - ZFS recordsize/volblocksize could potentially be tuned up toward NPWG to work as I/O size granularity, but enabled compression makes it too fuzzy. And those are normally user-configurable things. - ZFS I/O aggregation code could definitely use Optimal Write Size value and may be NPWG, but we don't have fields in GEOM now to report the minimal and optimal I/O sizes, and even maximal is not reported outside GEOM DISK to be used by ZFS.
MFC after: 1 week
show more ...
|
#
a78109d5 |
| 02-Apr-2021 |
Dmitry Chagin <dchagin@FreeBSD.org> |
Partially revert r248770.
Under geom(4) nvme_ns_bio_process() is on the path where sleep is prohibited as g_io_shedule_down() calls THREAD_NO_SLEEPNG() before geom->start().
Reviewed By: imp MFC a
Partially revert r248770.
Under geom(4) nvme_ns_bio_process() is on the path where sleep is prohibited as g_io_shedule_down() calls THREAD_NO_SLEEPNG() before geom->start().
Reviewed By: imp MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D29539
show more ...
|
#
4053f8ac |
| 02-May-2020 |
David Bright <dab@FreeBSD.org> |
Fix various Coverity-detected errors in nvme driver
This fixes several Coverity-detected errors in the nvme driver.
CIDs addressed: 1008344, 1009377, 1009380, 1193740, 1305470, 1403975, 1403980
Re
Fix various Coverity-detected errors in nvme driver
This fixes several Coverity-detected errors in the nvme driver.
CIDs addressed: 1008344, 1009377, 1009380, 1193740, 1305470, 1403975, 1403980
Reviewed by: imp@, vangyzen@ MFC after: 5 days Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D24532
show more ...
|
#
7bc97948 |
| 30-Apr-2020 |
Warner Losh <imp@FreeBSD.org> |
Style(9) nit: put function name at start of line.
|
#
d176b803 |
| 07-Feb-2020 |
Scott Long <scottl@FreeBSD.org> |
Ever since the block layer expanded its command syntax beyond just BIO_READ and BIO_WRITE, we've handled this expanded syntax poorly in drivers when the driver doesn't support a particular command.
Ever since the block layer expanded its command syntax beyond just BIO_READ and BIO_WRITE, we've handled this expanded syntax poorly in drivers when the driver doesn't support a particular command. Do a sweep and fix that.
Reported by: imp
show more ...
|
#
ab0681aa |
| 02-Sep-2019 |
Warner Losh <imp@FreeBSD.org> |
In all the places that we use the polled for completion interface, except crash dump support code, move the while loop into an inline function. These aren't done in the fast path, so if the compiler
In all the places that we use the polled for completion interface, except crash dump support code, move the while loop into an inline function. These aren't done in the fast path, so if the compiler choses to not inline, any performance hit is tiny.
show more ...
|
#
97be8b96 |
| 14-Aug-2019 |
Alexander Motin <mav@FreeBSD.org> |
Report NOIOB and NPWG fields as stripe size.
Namespace Optimal I/O Boundary field added in NVMe 1.3 and Namespace Preferred Write Granularity added in 1.4 allow upper layers to align I/Os for improv
Report NOIOB and NPWG fields as stripe size.
Namespace Optimal I/O Boundary field added in NVMe 1.3 and Namespace Preferred Write Granularity added in 1.4 allow upper layers to align I/Os for improved SSD performance and endurance.
I don't have hardware reportig those yet, but NPWG could probably be reported by bhyve.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
show more ...
|
#
a7bf63be |
| 01-Aug-2019 |
Alexander Motin <mav@FreeBSD.org> |
Add IOCTL to translate nvdX into nvmeY and NSID.
While very useful by itself, it also makes `nvmecontrol` not depend on hardcoded device names parsing, that in its turn makes simple to take nvdX (an
Add IOCTL to translate nvdX into nvmeY and NSID.
While very useful by itself, it also makes `nvmecontrol` not depend on hardcoded device names parsing, that in its turn makes simple to take nvdX (and potentially any other) device names as arguments.
Also added IOCTL bypass from nvdX to respective nvmeYnsZ makes them interchangeable for management purposes.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
show more ...
|
#
45d7e233 |
| 27-Feb-2019 |
Warner Losh <imp@FreeBSD.org> |
Unconditionally support unmapped BIOs. This was another shim for supporting older kernels. However, all supported versions of FreeBSD have unmapped I/Os (as do several that have gone EOL), remove it.
Unconditionally support unmapped BIOs. This was another shim for supporting older kernels. However, all supported versions of FreeBSD have unmapped I/Os (as do several that have gone EOL), remove it. It's unlikely the driver would work on the older kernels anyway at this point.
show more ...
|
#
5312bd8e |
| 08-Jan-2019 |
Chuck Tuffli <chuck@FreeBSD.org> |
Add NVMe drive to NOIOB quirk list
Dell-branded Intel P4600 NVMe drives benefit from NVMe 1.3's NOIOB feature. Unfortunately just like Intel DC P4500s, they don't advertise themselves as benefiting
Add NVMe drive to NOIOB quirk list
Dell-branded Intel P4600 NVMe drives benefit from NVMe 1.3's NOIOB feature. Unfortunately just like Intel DC P4500s, they don't advertise themselves as benefiting from this...
This changes adds P4600s to the existing list of old drives which benefit from striping.
PR: 233969 Submitted by: David Fugate <dave.fugate@gmail.com> Reviewed by: imp, mav Approved by: imp (mentor) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D18772
show more ...
|
#
87b3975e |
| 13-Dec-2018 |
Chuck Tuffli <chuck@FreeBSD.org> |
nda(4) fix check for Dataset Management support
In the nda(4) driver, only set DISKFLAG_CANDELETE (a.k.a. can support BIO_DELETE) if the drive supports Dataset Management. There are reports that wit
nda(4) fix check for Dataset Management support
In the nda(4) driver, only set DISKFLAG_CANDELETE (a.k.a. can support BIO_DELETE) if the drive supports Dataset Management. There are reports that without this check, VMWare Workstation does not work reliably.
Fix is to check the ONCS field in the NVMe Controller Data structure for support. This check previously existed but did not survive the big-endian changes.
Reported by: yuripv@yuripv.net Reviewed by: imp, mav, jimharris Approved by: imp (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D18493
show more ...
|