oxidecomputer / oxidecomputer/helios

nvme-loadgen does not handle drives that aren't formatted

Open
#209 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
481
Forks
21
Avg merge
1d 17h
Merged PRs (30d)
2

Description

The implementation of the nvme-loadgen logic requires that a pool exists. When the p0 minor doesn't exist, because say the drive came from the factory and never had anything on it, it'll fail. I manually just created a zpool and then destroyed it to get the right whole disk partitioning. We should consider doing something like this. The error when this fails looks something like:

[ Dec 28 04:17:21 Executing start method ("/usr/lib/compliance-nvme-loadgen seqread N0"). ]
[ Dec 28 04:17:34 Method "start" exited with status 0. ]
Starting 1 process
fio: failed opening chardev /dev/rdsk/c9t0014EE8401CE2900d0p0 for size check
file:filesetup.c:795, func=open(/dev/rdsk/c9t0014EE8401CE2900d0p0), error=No such device or address
fio: pid=0, err=6/file:filesetup.c:795, func=open(/dev/rdsk/c9t0014EE8401CE2900d0p0), error=No such device or address


Run status group 0 (all jobs):
[ Dec 28 04:17:34 Stopping because all processes in service exited. ]
[ Dec 28 04:17:34 Executing stop method (:kill). ]

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the nvme-loadgen implementation and trace how it selects the p0 device when no pool has previously existed. Reproduce the failure with an unformatted drive or absent p0 minor, then verify that nvme-loadgen prepares or handles the device successfully without the fio open error shown here.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.