Page MenuHomeFreeBSD

Fix NVMe's use of XPT_GDEV_TYPE
ClosedPublic

Authored by chuck_tuffli.net on Apr 23 2017, 5:49 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, May 10, 2:20 PM
Unknown Object (File)
Dec 24 2023, 7:28 AM
Unknown Object (File)
Dec 24 2023, 7:28 AM
Unknown Object (File)
Dec 24 2023, 7:28 AM
Unknown Object (File)
Dec 23 2023, 10:16 AM
Unknown Object (File)
Dec 13 2023, 6:19 AM
Unknown Object (File)
Sep 22 2023, 10:33 AM
Unknown Object (File)
Aug 31 2023, 7:24 PM

Details

Summary

This patch changes the way XPT_GDEV_TYPE works for NVMe. The current ccb_getdev structure includes pointers to the NVMe Identify Controller and Namespace structures, but these are kernel virtual addresses which are not accessible from user space.

As an alternative, the patch removes these pointers from ccb_getdev and adds two new types to ccb_dev_advinfo to retrieve the Identify Controller (CDAI_TYPE_NVME_CNTRL) and Namespace (CDAI_TYPE_NVME_NS) data structures.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Fixed white-space problem with cam_ccb.h

Please regenerate the diffs w/ proper context. See https://wiki.freebsd.org/action/show/Phabricator for details on how to do that.

Add full diff context per feedback.

sys/cam/nvme/nvme_da.c
704 ↗(On Diff #27697)

It appears that cgd is only used in this function for setting these two variables, and for some #if 0-ed out code later on. Since it's no longer used, can you remove it entirely?

sys/cam/nvme/nvme_da.c
704 ↗(On Diff #27697)

If it weren't for the ifdef'd out quirk code, I would have taken it out. Can we let @imp make the call?

Remove it. If we need it again, it can be added back.

chuck_tuffli.net marked 2 inline comments as done.

Removed ccb_getdev references and ifdef'd out quirk code in ndaregister

LGTM, but @imp should have the final say.

This revision is now accepted and ready to land.Apr 26 2017, 10:17 PM

Except for padding.

sys/cam/cam_ccb.h
363–364 ↗(On Diff #27767)

should we replace this with void *padding[2]; instead?

sys/cam/cam_ccb.h
363–364 ↗(On Diff #27767)

Works for me. I will plan on this unless someone has an objection.

This revision was automatically updated to reflect the committed changes.