What's the upstream disposition with nvme-stas?
John Meneghini
jmeneghi at redhat.com
Thu Jun 22 10:41:30 PDT 2023
Christoph, Sagi, Keith, et al,
There has been an ongoing series of 3-way private conversations about the status of nvme-stas and I am sending this email to put
these conversations into the public.
Background:
If my memory serves me correctly: after several failed attempts to add an "NVMe/TCP auto-discovery" feature to Linux by
leveraging an avahi based mDNS/SD mechanism (one by Sagi, circa 2018, and one by Martin Wilck, circa 2021) TP-8009/8010 was
created at NVMexpress.org. At that time Martin Belanger asked Keith Busch for a repository in the linux-nvme domain on Github
and nvme-stas was born. My understanding was that the goal of the nvme-stas repository was to stage the nvme-cli code changes
that would be needed to eventually support TP-8009/8010. While some of that work has been done and nvme-cli now supports TP-8010
compliant discovery controllers (e.g. with the addition of the nvme dim - Send Discovery Information Management - command) there
is still much functionality in nvme-stas that has not been merged into nvme-cli, including the mDNS/SD based functionality
needed to support TP-8009. This remaining nvme-stas functionality, and the status of any effort to merge it into nvme-cli, is
the source of all the private conversations and debates.
Current Status:
At LSFMM this year I spoke with privately with Keith Bush and others about the status of nvme-stas. When Keith and I spoke he
told me that Dell had talked with him privately about nvme-stas and asked if the nvme-stas functionality can be merged into
nvme-cli or otherwise accepted upstream. Keith said that he told Dell, after looking at the nvme-stas implementation (again),
the answer was no.
When I spoke with Hannes about nvme-stas he agreed with me that the utility is, at best, a stop-gap solution and that we need to
continue to look for a better solution to the "NVMe/TCP auto-discovery" problem. We brain stormed about implementing an nvme-tcp
discovery listener socket in Linux that leverages the Kickstart Discovery Request (KDReq) PDU from TP-8010. We also
brainstormed about this topic at the 2022 ALPSS conference last October. I think people in the upstream community are aware that
some improvements with NVMe/TCP discovery are needed, but nobody, that I am aware of, see's nvme-stas as a solution to the
problem. Nobody really cares about nvme-stas... but then that's the purpose of this email. I want to stop talking about what
other people think. They can speak for themselves. And if we are going to talk about the short comings and problems with
nvme-stats, let's do that publicly, not privately. I am tired of the hear-say game that happens with private conversations.
So what's the debate?
I work for Red Hat and Dell has asked Red Hat to support nvme-stas as a Red Hat product. Red Hat is not inclined to do this
because we currently support discovering and managing all nvme and nvme-of devices with the nvme-cli utility and we don't want
to support two different utilities to do this. Our general policy at Red Hat is: upstream first. We don't want to support any
package or feature that is not first supported upstream. So the push back from Red Hat to Dell, privately, has been: please get
your nvme-stas functionality merged into the nvme-cli utility upstream. This is the source of all the three way private
conversations with Dell and everyone else. Anyways, at this point it looks like a complete merge of nvme-stas with nvme-cli is
not going to happen, so if there is any conversation about why or how or what needs to be done to change that, let's have that
conversation here.
So what does "supported by" mean any way?
I believe the goal of the upstream linux-nvme project is to support one general purpose Linux utility used for discovering and
managing nvme and nvme-of devices. This is the nvme-cli utility. This is what's "supported upstream" and I'd like to end any
debate about whether or not the upstream community supports nvme-stas. Nvme-stas is supported by the upstream community to the
extent that it uses the kernel and libnvme APIs to access nvme devices; just as any other third party user space application
that exploits these kernel and user space APIs is supported. Other than this, nvme-stas is not "supported upstream".
Notwithstanding the fact that Dell's CDC is compliant the NVMe specification, nvme-stas is arguably little more than a Dell
specific utility which is designed to optimize nvme-of discovery with Dell's products. There are no upstream or open source CDC
implementations available (that I am aware of), and there are no commercial CDC implementations available other than Dell's
(that I am aware of). So, at this point, nvme-stas's primary purpose is to optimize and enable the special nvme-of discovery
features of Dell's CDC product. With this being the case, shouldn't nvme-stas be supported by Dell? It was written and designed
by Dell to support their products. Until this changes I really don't see why any entity other than Dell should be called upon to
"support nvme-stas".
In summary:
- The linux-nvme project supports the kernel and library APIs implemented in libnvme in support of the nvme-cli utility.
- The linux-nvme project supports the nvme-cli utility for the general purpose of managing nvme and nvme-of devices.
- Anyone is free to contribute to libnvme and nvme-cli to the extent that their contributions support this goal with nvme-cli
- Projects like nvme-stas are free to use libnvme and nvme-cli to support their specific use case,
but this does not mean their use case is supported by the upstream linux-nvme project
- It has been agreed that the remaining features and functions of nvme-stas cannot be merged into or subsumed by nvme-cli
- The upstream linux-nvme project neither approves of or disapproves of nvme-stas and the URL of the nvme-stas project
on Github in the linux-nvme domain should not be seen as an endorsement by the linux-nvme project.
- The linux-nvme upstream community is aware of the problems with NVMe/TCP discovery and we are searching for a solution.
We are also not sure we want to support mDNS/SD as a solution - TP-8009 notwithstanding.
Finally, whether or not any utility like nvme-stats or is supported by any Linux distribution is an independant business
decision. These business decisions and support statements stand apart from any support statement made by the upstream linux-nvme
project, and each Linux distribution has their own separate policies and standards for distributing and supporting Linux
upstream packages, utilities, functions and features. We can't assume support by one distribution == support upstream == support
by another distribution.
Thanks for your attention.
--
John Meneghini
RHEL SST - Platform Storage Group
jmeneghi at redhat.com
More information about the Linux-nvme
mailing list