| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are mostly compatible with Linux, with three exceptions.
1. We don't do metadata segment stuff. Our passthrough interface
doesn't cope. The code is there, but generates an error.
2. Linux lets you specify a namespace ID for the command. We current
do not: we get ours from the namespace device, or pass in a generic
one. Generally, this will lead to the same command, but FreeBSD's
is safer since you can't specify the wrong id.
3. --show-command outputs to stderr instead of stdout so you can both
see your command, and capture its output with a simple redirect.
Differential Revision: https://reviews.freebsd.org/D19296
Notes:
svn path=/head/; revision=350058
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create a set of routines and structures to hold the data for the args
for a command. Use them to generate help and to parse args. Convert
all the current commands over to the new format. "comnd" is a hat-tip
to the TOPS-20 %COMND JSYS that (very) loosely inspired much of the
subsequent command line notions in the industry, but this is far
simpler (the %COMND man page is longer than this code) and not in the
kernel... Also, it implements today's de-facto
command [verb]+ [opts]* [args]*
format rather than the old, archaic TOPS-20 command format :)
This is a snapshot of a work in progress to get the nvme passthru
stuff committed. In time it will become a private library and used
by some other programs in the tree that conform to the above pattern.
Differential Revision: https://reviews.freebsd.org/D19296
Notes:
svn path=/head/; revision=350057
|
|
|
|
| |
Notes:
svn path=/head/; revision=347939
|
|
|
|
|
|
|
| |
MFC after: 1 week
Notes:
svn path=/head/; revision=347158
|
|
|
|
| |
Notes:
svn path=/head/; revision=344653
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move from using a linker set to a constructor function that's
called. This simplifies the code and is slightly more obvious. We now
keep a list of page decoders rather than having an array we managed
before. Commands will move to something similar in the future.
Reviewed by: jhb@
Differential Revision: https://reviews.freebsd.org/D19275
Notes:
svn path=/head/; revision=344469
|
|
|
|
| |
Notes:
svn path=/head/; revision=344191
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use recent best practices for Copyright form at the top of
the license:
1. Remove all the All Rights Reserved clauses on our stuff. Where we
piggybacked others, use a separate line to make things clear.
2. Use "Netflix, Inc." everywhere.
3. Use a single line for the copyright for grep friendliness.
4. Use date ranges in all places for our stuff.
Approved by: Netflix Legal (who gave me the form), adrian@ (pmc files)
Notes:
svn path=/head/; revision=343755
|
|
|
|
|
|
|
|
|
|
|
|
| |
The nvmecontrol code that did the devlist assumed that we had a
tightly-packed allocation of units. Since pci writing exists, this
isn't the case. Loop over the first 256 units, which is a reasonable
number of possible units.
Sponsored by: Netflix
Notes:
svn path=/head/; revision=342358
|
|
|
|
| |
Notes:
svn path=/head/; revision=341664
|
|
|
|
| |
Notes:
svn path=/head/; revision=341663
|
|
|
|
| |
Notes:
svn path=/head/; revision=341662
|
|
|
|
|
|
|
|
|
|
| |
Other vendors base their additional smart info pages on what Intel did
plus some other bits. So it's convenient to have this be global.
Sponsored by: Netflix
Notes:
svn path=/head/; revision=341661
|
|
|
|
|
|
|
|
|
|
|
| |
This was never documented, and isn't needed, so it's best removed to
avoid confusion.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18460
Notes:
svn path=/head/; revision=341660
|
|
|
|
|
|
|
|
|
|
| |
Move the intel and wdc vendor specific stuff to their own modules.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18460
Notes:
svn path=/head/; revision=341659
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the pointers we pass into the commands const, also make the
linker set mirrors const.
Suggested by: cem@
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18459
Notes:
svn path=/head/; revision=341658
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Dynamically load all the .so files found in /libexec/nvmecontrol and
/usr/local/libexec/nvmecontrol.
o Link nvmecontrol -rdynamic so that its symbols are visible to the
libraries we load.
o Create concatinated linker sets that we dynamically expand.
o Add the linked-in top and logpage linker sets to the mirrors for them
and add those sets to the mirrors when we load a new .so.
o Add some macros to help hide the names of the linker sets.
o Update the man page.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18455
fold
Notes:
svn path=/head/; revision=341657
|
|
|
|
|
|
|
| |
Sponsored by: Netflix
Notes:
svn path=/head/; revision=341416
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was a typo for wdc. Eliminate it since it was in error. People
should use either 'wdc' or 'hgst' for the vendor from now on. 'hgst'
works for all versions this functionality is present for.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341415
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the Intel specific log pages (including the one that samsung
implements) to intel.c. Add comment to the samsung vendor that it will
be going away soon.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341414
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Eliminage redundant spaces and nvmecontrol at start of all the usage
strings. Update the usage printing code to add them back when
presenting to the user. Allow multi-line usage messages and print
proper leading spaces for lines starting with a space.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341413
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Provide a usage() function that takes a struct nvme_function pointer
and produces a usage mssage. Eliminate all now-redundant usage
functions. Propigate the new argument through the program as needed.
Use common routine to print usage.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341412
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the dispatched function doesn't exit, then we get can get a
spurious function not found message. They all do exit, but this is a
little cleaner.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341411
|
|
|
|
|
|
|
|
|
|
|
| |
These are all hgst/wdc specific, so move them into the wdc.c to live
with the wdc command.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341410
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the upcoming move of vendor specific code into vendor specific
files, make the common logpage routines global and move them to
nvmecontrol.h.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341409
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move logpage function def to header. Convert all the logpage_function
elements to elements of the linker set. Leave them all in logpage.c
for the moment.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341408
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
More commands will be added to nvmecontrol. Also, there will be a few
more vendor commands (some of which may need to remain private to
companies writing them). The first step on that journey is to move to
using linker sets to dispatch commands. The next step will be using
dlopen to bring in the .so's that have the command that might need
to remain private for seamless integration.
Similar changes to this will be needed for vendor specific log pages.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D18403
Notes:
svn path=/head/; revision=341407
|
|
|
|
|
|
|
|
|
|
| |
The vendor name wds should have been wdc. Add wdc and keep the wds for
script compat.
MFC after: 3 days
Notes:
svn path=/head/; revision=339493
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original NVMe API used bit-fields to represent fields in data
structures defined by the specification (e.g. the op-code in the command
data structure). The implementation targeted x86_64 processors and
defined the bit fields for little endian dwords (i.e. 32 bits).
This approach does not work as-is for big endian architectures and was
changed to use a combination of bit shifts and masks to support PowerPC.
Unfortunately, this changed the NVMe API and forces #ifdef's based on
the OS revision level in user space code.
This change reverts to something that looks like the original API, but
it uses bytes instead of bit-fields inside the packed command structure.
As a bonus, this works as-is for both big and little endian CPU
architectures.
Bump __FreeBSD_version to 1200081 due to API change
Reviewed by: imp, kbowling, smh, mav
Approved by: imp (mentor)
Differential Revision: https://reviews.freebsd.org/D16404
Notes:
svn path=/head/; revision=338182
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename print_controller to nvme_print_controller. Put it in its
own file for easy inclusion. Move util.c to be nc_util.c to not
conflict with camcontrol. add nvecontrol_ext.h to define shared
interfaces.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D15371
Notes:
svn path=/head/; revision=335091
|
|
|
|
|
|
|
|
|
|
|
|
| |
PowerPC has PAGE_SIZE as a long, not an int. This causes the compiler to throw
a format mismatch warning on this print. To work around the difference, print
it as a long instead of an int, and force the argument to a long.
Reviewed By: imp
Differential Revision: https://reviews.freebsd.org/D15653
Notes:
svn path=/head/; revision=334754
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows create/delete/attach/detach namespaces on new NVMe controllers.
This is only a first user-level part of the bigger change set. Kernel part
required to detect and handle the configuration changes without reboot is
completely independent and will be added separately.
Submitted by: Matt Williams <mffbsdw@gmail.com> (original version)
Differential Revision: https://reviews.freebsd.org/D11399
Notes:
svn path=/head/; revision=333275
|
|
|
|
|
|
|
|
| |
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Notes:
svn path=/head/; revision=330846
|
|
|
|
|
|
|
|
|
|
|
| |
It allows to change namespace parameters, such as block size, metadata,
protection information, etc. and/or erase the data.
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Notes:
svn path=/head/; revision=330826
|
|
|
|
|
|
|
|
| |
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Notes:
svn path=/head/; revision=330802
|
|
|
|
|
|
|
|
| |
Some of them are already supported by existing hardware, so reporting
them `nvmecontrol identify` can be useful.
Notes:
svn path=/head/; revision=330759
|
|
|
|
|
|
|
|
| |
Broken by: 329824
Sponsored by: Spectra Logic Corp
Notes:
svn path=/head/; revision=329830
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove bitfields from defined structures as they are not portable.
Instead use shift and mask macros in the driver and nvmecontrol application.
NVMe is now working on powerpc64 host.
Submitted by: Michal Stanek <mst@semihalf.com>
Obtained from: Semihalf
Reviewed by: imp, wma
Sponsored by: IBM, QCM Technologies
Differential revision: https://reviews.freebsd.org/D13916
Notes:
svn path=/head/; revision=329824
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.
The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.
No functional change intended.
Notes:
svn path=/head/; revision=326276
|
|
|
|
|
|
|
| |
Sponsored by: Dell EMC Isilon
Notes:
svn path=/head/; revision=325188
|
|
|
|
|
|
|
|
|
|
|
|
| |
Printing the entire log page is causing confusion over available
slots. Report only those slots that are valid. In the case where the
firmware download isn't supported, assume that only the first slot is
valid (I have no hardware to test this assumption though)
Sponsored by: Netflix
Notes:
svn path=/head/; revision=324978
|
|
|
|
|
|
|
|
|
|
| |
It's desirable to access controler data to inform printing log pages
(such as limiting the printing to valid ranges).
Sponsored by: Netflix
Notes:
svn path=/head/; revision=324977
|
|
|
|
|
|
|
|
| |
Submitted by: Matt Williams
Sponsored by: Netflix
Notes:
svn path=/head/; revision=322992
|
|
|
|
|
|
|
|
| |
unsigned check warnings from traditional unix code construsts bogusly
flagged as potentially unsafe.
Notes:
svn path=/head/; revision=320522
|
|
|
|
|
|
|
|
|
|
|
| |
After review by the WDC engineers, improve how we pull down the
so-called 'e6' logs. The 'c6' logs are obsolete and support for them
has been removed because FreeBSD needed to pull them in chunks, which
is incompatible with the 0xc6 opcode implementation. Rather than leave
the code in place that produces bad log pulls, remove it.
Notes:
svn path=/head/; revision=320483
|
|
|
|
|
|
|
|
|
|
| |
command.
Sponsored by: Netflix
Submitted by: Matt Williams (via D11330)
Notes:
svn path=/head/; revision=320425
|
|
|
|
|
|
|
|
|
|
| |
than just the log page code.
Sponsored by: Netflix, Inc
Submitted by: Matt Williams (via D11330)
Notes:
svn path=/head/; revision=320423
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes several -Wold-style-definition warnings.
X-MFC with: 313191
Reported by: amd64-gcc-6.3.0 (devel/amd64-xtoolchain-gcc)
Sponsored by: Dell EMC Isilon
Notes:
svn path=/head/; revision=316105
|
|
|
|
|
|
|
|
|
|
| |
This simplifies make logic/output
MFC after: 1 month
Sponsored by: Dell EMC Isilon
Notes:
svn path=/head/; revision=314656
|
|
|
|
|
|
|
|
|
|
|
| |
Make -p help and -v help list all the pages we know about.
Add -v to usage.
Update the man page.
Sponsored by: Netflix
Notes:
svn path=/head/; revision=314230
|