Author: imp Date: Fri Dec 21 23:22:37 2018 New Revision: 342358 URL: https://svnweb.freebsd.org/changeset/base/342358
Log: 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 Modified: head/sbin/nvmecontrol/devlist.c Modified: head/sbin/nvmecontrol/devlist.c ============================================================================== --- head/sbin/nvmecontrol/devlist.c Fri Dec 21 21:17:45 2018 (r342357) +++ head/sbin/nvmecontrol/devlist.c Fri Dec 21 23:22:37 2018 (r342358) @@ -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 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); _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"