diff --git a/.github/cross/clang.txt b/.github/cross/clang.txt
deleted file mode 100644
index 1484a3e..0000000
--- a/.github/cross/clang.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-[binaries]
-c = 'clang'
-cpp = 'clang++'
-strip = 'strip'
-pkgconfig = 'pkg-config'
diff --git a/.github/cross/ubuntu-armhf.txt b/.github/cross/ubuntu-cross-armhf.txt
similarity index 100%
rename from .github/cross/ubuntu-armhf.txt
rename to .github/cross/ubuntu-cross-armhf.txt
diff --git a/.github/cross/ubuntu-ppc64le.txt b/.github/cross/ubuntu-cross-ppc64le.txt
similarity index 100%
rename from .github/cross/ubuntu-ppc64le.txt
rename to .github/cross/ubuntu-cross-ppc64le.txt
diff --git a/.github/cross/ubuntu-s390x.txt b/.github/cross/ubuntu-cross-s390x.txt
similarity index 100%
rename from .github/cross/ubuntu-s390x.txt
rename to .github/cross/ubuntu-cross-s390x.txt
diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml
index 80b0496..f7b7ae0 100644
--- a/.github/workflows/appimage.yml
+++ b/.github/workflows/appimage.yml
@@ -22,13 +22,45 @@ jobs:
python-version: '3.x'
- uses: BSFishy/meson-build@v1.0.3
with:
- setup-options: --werror --buildtype=release --prefix=/usr
+ setup-options: >
+ --werror
+ --buildtype=release
+ --prefix=/usr
+ --force-fallback-for=libnvme
+ -Dlibnvme:werror=false
action: install
+ meson-version: 0.61.2
- name: build AppImage
uses: AppImageCrafters/build-appimage@v1.3
with:
recipe: .github/AppImageBuilder.yml
- uses: actions/upload-artifact@v3
+ name: upload artifacts to github
with:
name: AppImage
path: '*.AppImage*'
+
+ deploy-appimage:
+ name: deploy AppImage
+ runs-on: ubuntu-latest
+ needs: build-appimage
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+ steps:
+ - name: Download artifact
+ uses: dawidd6/action-download-artifact@v2
+ with:
+ workflow: ${{ github.event.workflow_run.workflow_id }}
+ workflow_conclusion: success
+ - name: FTP Deployer
+ uses: sand4rt/ftp-deployer@v1.7
+ with:
+ sftp: true
+ host: ${{ secrets.SFTP_SERVER }}
+ port: 22
+ username: ${{ secrets.SFTP_USERNAME }}
+ password: ${{ secrets.SFTP_PASSWORD }}
+ remote_folder: '/upload'
+ local_folder: '.'
+ cleanup: false
+ include: '[ "*", "**/*" ]'
+ exclude: '[".github/**", ".git/**", "*.env"]'
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fae50a5..e3e2fd4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,341 +10,99 @@ on:
workflow_dispatch:
jobs:
- gcc-debug:
- name: gcc debug
+ default:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ compiler: [gcc, clang]
+ buildtype: [debug, release]
+ container:
+ image: ghcr.io/igaw/linux-nvme/debian:0.30
steps:
- - name: install dependencies
- run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-dev
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- - uses: bsfishy/meson-build@v1.0.3
- name: build
- with:
- action: build
- setup-options: >
- --werror
- --buildtype=debug
- -Dlibnvme:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
+ - name: build
+ run: |
+ scripts/build.sh -b ${{ matrix.buildtype }} -c ${{ matrix.compiler }}
- uses: actions/upload-artifact@v3
+ name: upload logs
if: failure()
with:
- name: log files
+ name: logs files
path: |
- build/meson-logs/*.txt
+ .build-ci/meson-logs/*.txt
- gcc-release:
- name: gcc release
+ cross:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ include:
+ - arch: armhf
+ port: armhf
+ compiler: gcc-arm-linux-gnueabihf
+ packages:
+ - arch: s390x
+ port: s390x
+ compiler: gcc-s390x-linux-gnu
+ packages: libgcc-s1:s390x
+ - arch: ppc64le
+ port: ppc64el
+ compiler: gcc-powerpc64le-linux-gnu
+ packges:
steps:
- - name: install dependencies
- run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-dev
- uses: actions/checkout@v3
- - uses: actions/setup-python@v4
- with:
- python-version: '3.x'
- - uses: bsfishy/meson-build@v1.0.3
- name: build
- with:
- action: build
- setup-options: >
- --werror
- --buildtype=release
- -Dlibnvme:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
+ - name: set up arm architecture
+ run: |
+ export release=$(lsb_release -c -s)
+ sudo dpkg --add-architecture ${{ matrix.port }}
+ sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
+ sudo dd of=/etc/apt/sources.list.d/${{ matrix.arch }}.list <
- --werror
- --buildtype=release
- --cross-file=.github/cross/clang.txt
- -Dlibnvme:werror=false
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
+ .build-ci/meson-logs/*.txt
fallback-shared-libraries:
name: fallback shared libraries
runs-on: ubuntu-latest
+ container:
+ image: ghcr.io/igaw/linux-nvme/debian:0.30
+ if: github.ref == 'refs/heads/master'
steps:
- - name: install dependencies
- run: sudo apt-get install libpam-dev libcap-ng-dev
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- - uses: BSFishy/meson-build@v1.0.3
- name: build
- with:
- action: build
- setup-options: >
- --werror
- --buildtype=release
- --wrap-mode=forcefallback
- --default-library=shared
- -Dlibnvme:werror=false
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
-
- fallback-static-libraries:
- name: fallback static libraries
- runs-on: ubuntu-latest
- steps:
- - name: install dependencies
- run: sudo apt-get install libpam-dev libcap-ng-dev
- - uses: actions/checkout@v3
- - uses: actions/setup-python@v4
- with:
- python-version: '3.x'
- - uses: BSFishy/meson-build@v1.0.3
- name: build
- with:
- action: build
- setup-options: >
- --werror
- --buildtype=release
- --wrap-mode=forcefallback
- --default-library=static
- -Dlibnvme:werror=false
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
-
- cross-armhf:
- name: cross armhf
- runs-on: ubuntu-latest
- steps:
- - name: set up arm architecture
- run: |
- export release=$(lsb_release -c -s)
- sudo dpkg --add-architecture armhf
- sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
- sudo dd of=/etc/apt/sources.list.d/armhf.list <
- --werror
- --buildtype=release
- --cross-file=.github/cross/ubuntu-armhf.txt
- -Dlibnvme:python=disabled
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
-
- cross-ppc64le:
- name: cross ppc64le
- runs-on: ubuntu-latest
- steps:
- - name: set up ppc64le architecture
- run: |
- export release=$(lsb_release -c -s)
- sudo dpkg --add-architecture ppc64el
- sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
- sudo dd of=/etc/apt/sources.list.d/ppc64el.list <
- --werror
- --buildtype=release
- --cross-file=.github/cross/ubuntu-ppc64le.txt
- -Dlibnvme:werror=false
- -Dlibnvme:python=disabled
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
-
- cross-s390x:
- name: cross s390x
- runs-on: ubuntu-latest
- steps:
- - name: set up s390x architecture
- run: |
- export release=$(lsb_release -c -s)
- sudo dpkg --add-architecture s390x
- sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
- sudo dd of=/etc/apt/sources.list.d/s390x.list <
- --werror
- --buildtype=release
- --cross-file=.github/cross/ubuntu-s390x.txt
- -Dlibnvme:werror=false
- -Dlibnvme:python=disabled
- -Dopenssl:werror=false
- meson-version: 0.61.2
- - uses: bsfishy/meson-build@v1.0.3
- name: test
- with:
- action: test
- meson-version: 0.61.2
- - uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: log files
- path: |
- build/meson-logs/*.txt
-
- build-minimal:
- name: muon minimal
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: build muon and samurai build-tool
- run: |
- mkdir build-tools
- cd build-tools
- git clone --depth 1 https://git.sr.ht/~lattis/muon
- cd muon
-
- export CC=gcc
- export ninja=build/samu
-
- ./tools/bootstrap_ninja.sh build
- ./bootstrap.sh build
-
- build/muon setup \
- -Dlibcurl=disabled \
- -Dlibarchive=disabled \
- -Ddocs=disabled \
- -Dsamurai=disabled \
- build
- build/samu -C build
- build/muon -C build test
- - name: fetch libnvme
- run: |
- cd subprojects
- git clone https://github.com/linux-nvme/libnvme.git
- libnvme_ref=$(sed -n "s/revision = \([0-9a-z]\+\)/\1/p" libnvme.wrap)
- git -C libnvme checkout $libnvme_ref
- name: build
run: |
- export PATH=$(pwd)/build-tools/muon/build:$PATH
+ scripts/build.sh -b release -c gcc fallback
+ - uses: actions/upload-artifact@v3
+ if: failure()
+ with:
+ name: log files
+ path: |
+ .build-ci/meson-logs/*.txt
- muon setup \
- -Dlibnvme:python=disabled \
- -Dlibnvme:json-c=disabled \
- -Djson-c=disabled \
- build
- samu -C build
- - name: test
+ build-muon:
+ name: muon minimal static
+ runs-on: ubuntu-latest
+ container:
+ image: ghcr.io/igaw/linux-nvme/debian:0.30
+ steps:
+ - uses: actions/checkout@v3
+ - name: build
run: |
- export PATH=$(pwd)/build-tools/muon/build:$PATH
-
- muon -C build test
+ scripts/build.sh -m muon
diff --git a/Documentation/meson.build b/Documentation/meson.build
index a526b99..0dc0300 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -84,10 +84,14 @@ adoc_sources = [
'nvme-netapp-smdevices',
'nvme-ns-descs',
'nvme-ns-rescan',
+ 'nvme-nvme-mi-recv',
+ 'nvme-nvme-mi-send',
'nvme-nvm-id-ctrl',
'nvme-ocp-latency-monitor-log',
'nvme-ocp-smart-add-log',
'nvme-ocp-clear-fw-activate-history',
+ 'nvme-ocp-clear-pcie-correctable-error-counters',
+ 'nvme-ocp-eol-plp-failure-mode',
'nvme-persistent-event-log',
'nvme-pred-lat-event-agg-log',
'nvme-predictable-lat-log',
diff --git a/Documentation/nvme-admin-passthru.1 b/Documentation/nvme-admin-passthru.1
index 90b0f8c..4929a23 100644
--- a/Documentation/nvme-admin-passthru.1
+++ b/Documentation/nvme-admin-passthru.1
@@ -2,12 +2,12 @@
.\" Title: nvme-admin-passthru
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
-.\" Date: 03/31/2023
+.\" Date: 06/30/2023
.\" Manual: NVMe Manual
.\" Source: NVMe
.\" Language: English
.\"
-.TH "NVME\-ADMIN\-PASSTHR" "1" "03/31/2023" "NVMe" "NVMe Manual"
+.TH "NVME\-ADMIN\-PASSTHR" "1" "06/30/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -34,9 +34,11 @@ nvme-admin-passthru \- Submit an arbitrary admin command, return results
.nf
\fInvme\-admin\-passthru\fR [\-\-opcode= | \-o ]
[\-\-flags= | \-f ] [\-rsvd= | \-R ]
- [\-\-namespace\-id=] [\-\-cdw2=] [\-\-cdw3=]
- [\-\-cdw10=] [\-\-cdw11=] [\-\-cdw12=]
- [\-\-cdw13=] [\-\-cdw14=] [\-\-cdw15=]
+ [\-\-namespace\-id= | \-n ] [\-\-cdw2= | \-2 ]
+ [\-\-cdw3= | \-3 ] [\-\-cdw10= | \-4 ]
+ [\-\-cdw11= | \-5 ] [\-\-cdw12= | \-6 ]
+ [\-\-cdw13= | \-7 ] [\-\-cdw14= | \-8 ]
+ [\-\-cdw15= | \-9 ]
[\-\-data\-len= | \-l ]
[\-\-metadata\-len= | \-m ]
[\-\-input\-file= | \-i ]
@@ -77,7 +79,7 @@ The value for the reserved field in the command\&.
The value for the ns\-id in the command\&.
.RE
.PP
-\-\-cdw[2\-3,10\-15]=
+\-[2\-9] , \-\-cdw[2\-3,10\-15]=
.RS 4
Specifies the command dword value for that specified entry in the command
.RE
diff --git a/Documentation/nvme-admin-passthru.html b/Documentation/nvme-admin-passthru.html
index 2e9a379..065f553 100644
--- a/Documentation/nvme-admin-passthru.html
+++ b/Documentation/nvme-admin-passthru.html
@@ -751,9 +751,11 @@ nvme-admin-passthru(1) Manual Page
nvme-admin-passthru <device> [--opcode=<opcode> | -o <opcode>]
[--flags=<flags> | -f <flags>] [-rsvd=<rsvd> | -R <rsvd>]
- [--namespace-id=<nsid>] [--cdw2=<cdw2>] [--cdw3=<cdw3>]
- [--cdw10=<cdw10>] [--cdw11=<cdw11>] [--cdw12=<cdw12>]
- [--cdw13=<cdw13>] [--cdw14=<cdw14>] [--cdw15=<cdw15>]
+ [--namespace-id=<nsid> | -n <nsid>] [--cdw2=<cdw2> | -2 <cdw2>]
+ [--cdw3=<cdw3> | -3 <cdw3>] [--cdw10=<cdw10> | -4 <cdw4>]
+ [--cdw11=<cdw11> | -5 <cdw5>] [--cdw12=<cdw12> | -6 <cdw6>]
+ [--cdw13=<cdw13> | -7 <cdw7>] [--cdw14=<cdw14> | -8 <cdw8>]
+ [--cdw15=<cdw15> | -9 <cdw9>]
[--data-len=<data-len> | -l <data-len>]
[--metadata-len=<len> | -m <len>]
[--input-file=<file> | -i <file>]
@@ -832,6 +834,9 @@ printed to stdout for another program to parse.
+-[2-9] <cdw>
+
+
--cdw[2-3,10-15]=<cdw>
@@ -998,7 +1003,7 @@ Or if you want to save that structure to a file: