Try the first 256 units with nvmecontrol devlist.
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
This commit is contained in:
parent
416e232cc6
commit
9d0e9f8ef5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=342358
@ -46,6 +46,8 @@ __FBSDID("$FreeBSD$");
|
||||
#define DEVLIST_USAGE \
|
||||
"devlist\n"
|
||||
|
||||
#define NVME_MAX_UNIT 256
|
||||
|
||||
static inline uint32_t
|
||||
ns_get_sector_size(struct nvme_namespace_data *nsdata)
|
||||
{
|
||||
@ -79,19 +81,17 @@ devlist(const struct nvme_function *nf, int argc, char *argv[])
|
||||
ctrlr = -1;
|
||||
found = 0;
|
||||
|
||||
while (1) {
|
||||
while (ctrlr < NVME_MAX_UNIT) {
|
||||
ctrlr++;
|
||||
sprintf(name, "%s%d", NVME_CTRLR_PREFIX, ctrlr);
|
||||
|
||||
ret = open_dev(name, &fd, 0, 0);
|
||||
|
||||
if (ret != 0) {
|
||||
if (ret == EACCES) {
|
||||
warnx("could not open "_PATH_DEV"%s\n", name);
|
||||
continue;
|
||||
} else
|
||||
break;
|
||||
}
|
||||
if (ret == EACCES) {
|
||||
warnx("could not open "_PATH_DEV"%s\n", name);
|
||||
continue;
|
||||
} else if (ret != 0)
|
||||
continue;
|
||||
|
||||
found++;
|
||||
read_controller_data(fd, &cdata);
|
||||
|
Loading…
Reference in New Issue
Block a user