-
Notifications
You must be signed in to change notification settings - Fork 11
5.1. OX Command Line (OX v1.4)
OX accepts arguments in the command line. Please run the OX binary in the DFC prompt or make a script to start it automatically after the kernel boots.
You can use the follow command to see all available arguments:
$ ox-ctrl --help
Available commands:
start Start controller with standard configuration
debug Start controller and print Admin/IO commands
test Start controller, run tests and close
admin Execute specific tasks within the controller
Use ‘start’ to run the controller with standard settings:
$ ox-ctrl start
Use ‘debug’ to run the controller in debug mode (verbose):
$ ox-ctrl debug
When an I/O command is posted to the NVMe submission queue by the host, OX will print the information related to the I/O command flow in Figure 5. See a printed I/O debug example below:
[659] IO CMD 0x92, nsid: 1, cid: 0
Number of sectors: 8
DMA size: 32768 (data) + 0 (meta) = 32768 bytes
[ppa(0): ch: 0, lun: 0, blk: 220, pl: 0, pg: 0, sec: 0]
[ppa(1): ch: 0, lun: 0, blk: 220, pl: 0, pg: 0, sec: 1]
[ppa(2): ch: 0, lun: 0, blk: 220, pl: 0, pg: 0, sec: 2]
[ppa(3): ch: 0, lun: 0, blk: 220, pl: 0, pg: 0, sec: 3]
[ppa(4): ch: 0, lun: 0, blk: 220, pl: 1, pg: 0, sec: 0]
[ppa(5): ch: 0, lun: 0, blk: 220, pl: 1, pg: 0, sec: 1]
[ppa(6): ch: 0, lun: 0, blk: 220, pl: 1, pg: 0, sec: 2]
[ppa(7): ch: 0, lun: 0, blk: 220, pl: 1, pg: 0, sec: 3]
[prp(0): 0x00000000961a3000
[prp(1): 0x0000000096234000
[prp(2): 0x0000000096235000
[prp(3): 0x000000009ba23000
[prp(4): 0x0000000096237000
[prp(5): 0x0000000096238000
[prp(6): 0x0000000096239000
[prp(7): 0x000000009623a000
[meta_prp(0): 0x0000000000000000
CMD cid: 0, type: 0x1 submitted to FTL.
Channel: 0, FTL queue 2
[IO CALLBK. CMD 0x1. mmgr_ch: 0, lun: 0, blk: 220, pl: 0, pg: 0]
[IO CALLBK. CMD 0x1. mmgr_ch: 0, lun: 0, blk: 220, pl: 1, pg: 0]
[NVMe cmd 0x92. cid: 0 completed. Status: 0]
All commands related to configuration and storage administration are implemented under ‘admin’ argument. For now, only ‘erase-blk’ is implemented (LightNVM writes and reads the first page in the namespace, if the block is not erased properly, LightNVM will fail to initialize the device. If it happens, please erase the block 2 in the LUN 0 in channel 0. This process needs to be done only the first time you initialize the device with LightNVM). Use the follow commands to see all admin available arguments:
$ ox-ctrl-test admin --help
Use this command to run specific tasks within the controller.
Examples:
Show all available Admin tasks:
ox-ctrl admin -l
Run a specific admin task:
ox-ctrl admin -t <task_name>
$ ox-ctrl-test admin -l
Available OX Admin Tasks:
- 'erase-blk': erase specific blocks.
eg. ox-ctrl admin -t erase-blk (it will ask the block address)
- 'erase-lun': erase specific LUNs.
eg. ox-ctrl admin -t erase-lun (not implemented)
- 'erase-ch': erase specific channels.
eg. ox-ctrl admin -t erase-ch (not implemented)
OX tests are implemented in the ‘ox-ctrl-test’ binary. It will run a sequence of IO commands to test the Media Manager, LightNVM FTL and LightNVM command parser. To test the PCIe interconnect handler and NVMe queue support, please run tests from the host PC. Use the follow command to see all available test arguments:
$ ox-ctrl-test test --help
Examples:
Show all available set of tests + subtests:
ox-ctrl test -l
Run all available tests:
ox-ctrl test -a
Run a specific test set:
ox-ctrl test -s <set_name>
Run a specific subtest:
ox-ctrl test -s <set_name> -t <subtest_name>
Created by Ivan L. Picoli
Home
1.1 Introduction (OX v1.4)
1.2 Introduction (OX v2.x)
2. Open Channel SSDs
3. LightNVM
4. OX Controller
4.1. OX Libraries (OX v2.x)
4.2. The LNVM FTL (OX v1.4)
4.3. DFC Implementation
4.4. I/O Flow (OX v1.4)
4.5. OX Installation
5.1. OX Commands (OX v1.4)
5.2. OX Commands (OX v2.x)
6. OX Logs
7. OX-App: A Framework for Application-specific FTLs
7.1. OX-Block: The AppNVM full-fledged FTL
7.1.1. Overview
7.1.2. Bad Block Table
7.1.3. Block Metadata
7.1.4. Provisioning
7.1.5. Logical/physical mapping
7.1.6. Back-end PPA I/O
7.1.7. Front-end LBA I/O
7.1.8. Garbage collection
7.1.9. GC configuration