Re: "nvmecontrol: format request returned error" message for "nvmecontrol format -f 3 nvme1" on a still-new Optane DC P4800X 1.5T : Default behavior unchanged

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sat, 19 Sep 2026 02:58:10 UTC
Just the new test context and initial results, old message content
removed . . .

The FreeBSD OS upgrade was to:

# uname -apKU
FreeBSD 7950X3D-ZFS 16.0-CURRENT FreeBSD 16.0-CURRENT
main-n289384-758578370f6b GENERIC-NODEBUG amd64 amd64 1600026 1600026

It is an official FreeBSD pkgbase upgrade from today, not a personal build.


Context (my exploration):

# sysctl -a | grep nvme | grep -i -e fmt -e format -e timeout
dev.nvme.5.timeout_period: 30
dev.nvme.5.admin_timeout_period: 60
dev.nvme.4.timeout_period: 30
dev.nvme.4.admin_timeout_period: 60
dev.nvme.3.timeout_period: 30
dev.nvme.3.admin_timeout_period: 60
dev.nvme.2.timeout_period: 30
dev.nvme.2.admin_timeout_period: 60
dev.nvme.1.timeout_period: 30
dev.nvme.1.admin_timeout_period: 60
dev.nvme.0.timeout_period: 30
dev.nvme.0.admin_timeout_period: 60

(So: unchanged.)

# sysctl -Td dev.nvme.0.admin_timeout_period
# sysctl -Wd dev.nvme.0.admin_timeout_period
dev.nvme.0.admin_timeout_period: Timeout period for Admin queue (in seconds)

# nvmecontrol format
Missing arg controller-id|namespace-id
Usage:
    nvmecontrol format <args> controller-id|namespace-id

Format/erase one or all the namespaces
Options:
 -C, --crypto                  - Cryptographic erase
 -E, --erase                   - User data erase
 -f, --lbaf=<NUM>              - LBA Format to apply to the media
 -m, --ms=<NUM>                - Metadata settings
 -p, --pi=<NUM>                - Protective information
 -l, --pil=<NUM>               - Protective information location
 -s, --ses=<NUM>               - Secure erase settings

(So: No option to control the timeout is listed.) The man page shows:

     nvmecontrol format [-f fmt] [-m mset] [-p pi] [-l pil] [-E] [-C]
                 ⟨device-id | namespace-id⟩

( So: no -s .)


Plan:

nvmecontrol devlist
nvmecontrol identify nvme?ns1 # with appropriate value for the ?

time -l \
nvmecontrol format -f ? -m 0 nvme? # with appropriate value for each ?

Possibly extract some text from dmesg -a related to the result.


Initial results (it failed to wait for much more than 1 min for completion):

# nvmecontrol devlist
 nvme0: INTEL SSDPE21K015TA
    nvme0ns1 (1430799MB)
. . .

# nvmecontrol identify nvme0ns1
Size:                        366284646 blocks
Capacity:                    366284646 blocks
Utilization:                 366284646 blocks
Thin Provisioning:           Not Supported
Number of LBA Formats:       7
Current LBA Format:          LBA Format #03
Metadata Capabilities
  Extended:                  Supported
  Separate:                  Not Supported
Data Protection Caps:        Last Bytes, Type 1
Data Protection Settings:    Not Enabled
Multi-Path I/O Capabilities: Not Supported
Reservation Capabilities:    Not Supported
Format Progress Indicator:   Not Supported
Deallocate Logical Block:    Read Not Reported
Optimal I/O Boundary:        0 blocks
NVM Capacity:                0 bytes
Globally Unique Identifier:  00000000000000000000000000000000
IEEE EUI64:                  5cd2e496b5ea0100
LBA Format #00: Data Size:   512  Metadata Size:     0  Performance: Good
LBA Format #01: Data Size:   512  Metadata Size:     8  Performance: Good
LBA Format #02: Data Size:   512  Metadata Size:    16  Performance: Good
LBA Format #03: Data Size:  4096  Metadata Size:     0  Performance: Best
LBA Format #04: Data Size:  4096  Metadata Size:     8  Performance: Best
LBA Format #05: Data Size:  4096  Metadata Size:    64  Performance: Best
LBA Format #06: Data Size:  4096  Metadata Size:   128  Performance: Best

# time -l \
> nvmecontrol format -f 3 -m 0 nvme0
nvmecontrol: format request returned error
       60.21 real         0.00 user         0.00 sys
         0  maximum resident set size
         0  average shared memory size
         0  average unshared data size
         0  average unshared stack size
       148  page reclaims
         0  page faults
         0  swaps
         0  block input operations
         0  block output operations
         0  messages sent
         0  messages received
         0  signals received
         5  voluntary context switches
         0  involuntary context switches

# dmesg -a | tail -7
nvme0: Resetting controller due to a timeout.
nvme0: event="start"
nvme0: event="success"
nvme0: aborting outstanding admin command
nvme0: FORMAT_NVM (80) sqid:0 cid:15 nsid:ffffffff cdw10:00000003
cdw11:00000000
nvme0: ABORTED_BY_REQUEST (00/07) crd:0 m:0 dnr:1 p:0 sqid:0 cid:15 cdw0:0
nvme0: done aborting outstanding admin

Looks like the default used is still 60 sec.


So next time I'll try:

sysctl dev.nvme.0.admin_timeout_period= 1800 # 30 minutes

time -l \
nvmecontrol format -f 3 -m 0 nvme0 # with appropriate value for each ?


I'm going to wait for 30 min or more, allowing the Optane to complete
the process before trying such. More later.


-- 
===
Mark Millard
marklmi at yahoo.com