Page MenuHomeFreeBSD

D48218.1793619973.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D48218.1793619973.diff

diff --git a/sbin/nvmecontrol/nvmecontrol.c b/sbin/nvmecontrol/nvmecontrol.c
--- a/sbin/nvmecontrol/nvmecontrol.c
+++ b/sbin/nvmecontrol/nvmecontrol.c
@@ -100,6 +100,9 @@
{
struct nvme_pt_command pt;
+ if (ioctl(fd, NVME_GET_CONTROLLER_DATA, cdata) == 0)
+ return (0);
+
memset(&pt, 0, sizeof(pt));
pt.cmd.opc = NVME_OPC_IDENTIFY;
pt.cmd.cdw10 = htole32(1);
diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h
--- a/sys/dev/nvme/nvme.h
+++ b/sys/dev/nvme/nvme.h
@@ -40,6 +40,7 @@
#define NVME_RESET_CONTROLLER _IO('n', 1)
#define NVME_GET_NSID _IOR('n', 2, struct nvme_get_nsid)
#define NVME_GET_MAX_XFER_SIZE _IOR('n', 3, uint64_t)
+#define NVME_GET_CONTROLLER_DATA _IOR('n', 4, struct nvme_controller_data)
#define NVME_IO_TEST _IOWR('n', 100, struct nvme_io_test)
#define NVME_BIO_TEST _IOWR('n', 101, struct nvme_io_test)
diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c
--- a/sys/dev/nvme/nvme_ctrlr.c
+++ b/sys/dev/nvme/nvme_ctrlr.c
@@ -1443,6 +1443,9 @@
case NVME_GET_MAX_XFER_SIZE:
*(uint64_t *)arg = ctrlr->max_xfer_size;
break;
+ case NVME_GET_CONTROLLER_DATA:
+ memcpy(arg, &ctrlr->cdata, sizeof(ctrlr->cdata));
+ break;
/* Linux Compatible (see nvme_linux.h) */
case NVME_IOCTL_ID:
td->td_retval[0] = 0xfffffffful;
diff --git a/sys/dev/nvmf/host/nvmf.c b/sys/dev/nvmf/host/nvmf.c
--- a/sys/dev/nvmf/host/nvmf.c
+++ b/sys/dev/nvmf/host/nvmf.c
@@ -1055,6 +1055,9 @@
case NVME_GET_MAX_XFER_SIZE:
*(uint64_t *)arg = sc->max_xfer_size;
return (0);
+ case NVME_GET_CONTROLLER_DATA:
+ memcpy(arg, sc->cdata, sizeof(*sc->cdata));
+ return (0);
case NVMF_RECONNECT_PARAMS:
rp = (struct nvmf_reconnect_params *)arg;
*rp = sc->rparams;

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 2, 11:46 AM (7 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41323602
Default Alt Text
D48218.1793619973.diff (1 KB)

Event Timeline