aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2024-04-28 17:01:24 +0000
committerWarner Losh <imp@FreeBSD.org>2024-05-02 21:52:20 +0000
commitb12cae88cfb6286bc85a47b36ddd84f52b5c38ca (patch)
treec57ca7baf85d9ce6695badf57de4127aa9208a2d
parentc40e0bff7257e6d239779a5106dc67429941f63f (diff)
downloadsrc-b12cae88cfb6286bc85a47b36ddd84f52b5c38ca.tar.gz
src-b12cae88cfb6286bc85a47b36ddd84f52b5c38ca.zip
nvmecontrol: Allow optional /dev/ for device names
nvmecontrol operates on devices. Allow a user to specify the /dev/ if they want. Any device that starts with / will be treated as if it was a full path for maximum flexbility. Sponsored by: Netflix
-rw-r--r--sbin/nvmecontrol/nvmecontrol.84
-rw-r--r--sbin/nvmecontrol/nvmecontrol.c7
2 files changed, 7 insertions, 4 deletions
diff --git a/sbin/nvmecontrol/nvmecontrol.8 b/sbin/nvmecontrol/nvmecontrol.8
index b5a85b1ab9f5..1310184ac309 100644
--- a/sbin/nvmecontrol/nvmecontrol.8
+++ b/sbin/nvmecontrol/nvmecontrol.8
@@ -33,7 +33,7 @@
.\"
.\" Author: Jim Harris <jimharris@FreeBSD.org>
.\"
-.Dd April 17, 2024
+.Dd May 3, 2024
.Dt NVMECONTROL 8
.Os
.Sh NAME
@@ -687,7 +687,7 @@ or
.Pa nvdZ .
The leading
.Pa /dev/
-is omitted.
+may be omitted.
Where
.Aq Ar device-id
is required, you can use either the
diff --git a/sbin/nvmecontrol/nvmecontrol.c b/sbin/nvmecontrol/nvmecontrol.c
index 10623799d705..8ad9703de9f6 100644
--- a/sbin/nvmecontrol/nvmecontrol.c
+++ b/sbin/nvmecontrol/nvmecontrol.c
@@ -145,9 +145,12 @@ read_namespace_data(int fd, uint32_t nsid, struct nvme_namespace_data *nsdata)
int
open_dev(const char *str, int *fd, int write, int exit_on_error)
{
- char full_path[64];
+ char full_path[MAXPATHLEN];
- snprintf(full_path, sizeof(full_path), _PATH_DEV"%s", str);
+ if (str[0] == '/') /* Full path */
+ strlcpy(full_path, str, sizeof(full_path));
+ else /* Add /dev/ */
+ snprintf(full_path, sizeof(full_path), _PATH_DEV"%s", str);
*fd = open(full_path, write ? O_RDWR : O_RDONLY);
if (*fd < 0) {
if (exit_on_error) {