Skip to content

Commit bc5ed4b

Browse files
authored
Merge pull request #1442 from igaw/bring-back-dev
nvme: Print full device path
2 parents e0eb742 + 6c9f792 commit bc5ed4b

File tree

1 file changed

+56
-9
lines changed

1 file changed

+56
-9
lines changed

nvme-print.c

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6909,9 +6909,51 @@ void nvme_show_lba_status(struct nvme_lba_status *list, unsigned long len,
69096909
}
69106910
}
69116911

6912+
static void nvme_dev_full_path(nvme_ns_t n, char *path, size_t len)
6913+
{
6914+
struct stat st;
6915+
6916+
snprintf(path, len, "/dev/%s", nvme_ns_get_name(n));
6917+
if (stat(path, &st) == 0)
6918+
return;
6919+
6920+
snprintf(path, len, "/dev/spdk/%s", nvme_ns_get_name(n));
6921+
if (stat(path, &st) == 0)
6922+
return;
6923+
6924+
/*
6925+
* We could start trying to search for it but let's make
6926+
* it simple and just don't show the path at all.
6927+
*/
6928+
snprintf(path, len, "%s", nvme_ns_get_name(n));
6929+
}
6930+
6931+
static void nvme_generic_full_path(nvme_ns_t n, char *path, size_t len)
6932+
{
6933+
int head_instance;
6934+
int instance;
6935+
struct stat st;
6936+
6937+
sscanf(nvme_ns_get_name(n), "nvme%dn%d", &instance, &head_instance);
6938+
snprintf(path, len, "/dev/ng%dn%d", instance, head_instance);
6939+
6940+
if (stat(path, &st) == 0)
6941+
return;
6942+
6943+
snprintf(path, len, "/dev/spkd/ng%dn%d", instance, head_instance);
6944+
if (stat(path, &st) == 0)
6945+
return;
6946+
/*
6947+
* We could start trying to search for it but let's make
6948+
* it simple and just don't show the path at all.
6949+
*/
6950+
snprintf(path, len, "ng%dn%d", instance, head_instance);
6951+
}
6952+
69126953
void nvme_show_list_item(nvme_ns_t n)
69136954
{
69146955
char usage[128] = { 0 }, format[128] = { 0 };
6956+
char devname[128] = { 0 }; char genname[128] = { 0 };
69156957

69166958
long long lba = nvme_ns_get_lba_size(n);
69176959
double nsze = nvme_ns_get_lba_count(n) * lba;
@@ -6926,8 +6968,11 @@ void nvme_show_list_item(nvme_ns_t n)
69266968
snprintf(format, sizeof(format), "%3.0f %2sB + %2d B", (double)lba,
69276969
l_suffix, nvme_ns_get_meta_size(n));
69286970

6971+
nvme_dev_full_path(n, devname, sizeof(devname));
6972+
nvme_generic_full_path(n, genname, sizeof(genname));
6973+
69296974
printf("%-21s %-21s %-20s %-40s %-9d %-26s %-16s %-8s\n",
6930-
nvme_ns_get_name(n), nvme_ns_get_generic_name(n), nvme_ns_get_serial(n),
6975+
devname, genname, nvme_ns_get_serial(n),
69316976
nvme_ns_get_model(n), nvme_ns_get_nsid(n), usage, format,
69326977
nvme_ns_get_firmware(n));
69336978
}
@@ -6958,13 +7003,12 @@ static void nvme_show_simple_list(nvme_root_t r)
69587003

69597004
static void nvme_show_ns_details(nvme_ns_t n)
69607005
{
6961-
char usage[128] = { 0 }, format[128] = { 0 }, generic[128] = { 0 };
7006+
char usage[128] = { 0 }, format[128] = { 0 };
7007+
char devname[128] = { 0 }, genname[128] = { 0 };
69627008

69637009
long long lba = nvme_ns_get_lba_size(n);
69647010
double nsze = nvme_ns_get_lba_count(n) * lba;
69657011
double nuse = nvme_ns_get_lba_util(n) * lba;
6966-
int instance;
6967-
int head_instance;
69687012

69697013
const char *s_suffix = suffix_si_get(&nsze);
69707014
const char *u_suffix = suffix_si_get(&nuse);
@@ -6974,11 +7018,11 @@ static void nvme_show_ns_details(nvme_ns_t n)
69747018
sprintf(format,"%3.0f %2sB + %2d B", (double)lba, l_suffix,
69757019
nvme_ns_get_meta_size(n));
69767020

6977-
sscanf(nvme_ns_get_name(n), "nvme%dn%d", &instance, &head_instance);
6978-
sprintf(generic, "ng%dn%d", instance, head_instance);
7021+
nvme_dev_full_path(n, devname, sizeof(devname));
7022+
nvme_generic_full_path(n, genname, sizeof(genname));
69797023

6980-
printf("%-12s %-12s %-8x %-26s %-16s ", nvme_ns_get_name(n),
6981-
generic, nvme_ns_get_nsid(n), usage, format);
7024+
printf("%-12s %-12s %-8x %-26s %-16s ", devname,
7025+
genname, nvme_ns_get_nsid(n), usage, format);
69827026
}
69837027

69847028
static void nvme_show_detailed_list(nvme_root_t r)
@@ -7178,13 +7222,16 @@ static void json_detail_list(nvme_root_t r)
71787222
static struct json_object *json_list_item(nvme_ns_t n)
71797223
{
71807224
struct json_object *jdevice = json_create_object();
7225+
char devname[128] = { 0 };
71817226

71827227
long long lba = nvme_ns_get_lba_size(n);
71837228
double nsze = nvme_ns_get_lba_count(n) * lba;
71847229
double nuse = nvme_ns_get_lba_util(n) * lba;
71857230

7231+
nvme_dev_full_path(n, devname, sizeof(devname));
7232+
71867233
json_object_add_value_int(jdevice, "NameSpace", nvme_ns_get_nsid(n));
7187-
json_object_add_value_string(jdevice, "DevicePath", nvme_ns_get_name(n));
7234+
json_object_add_value_string(jdevice, "DevicePath", devname);
71887235
json_object_add_value_string(jdevice, "Firmware", nvme_ns_get_firmware(n));
71897236
json_object_add_value_string(jdevice, "ModelNumber", nvme_ns_get_model(n));
71907237
json_object_add_value_string(jdevice, "SerialNumber", nvme_ns_get_serial(n));

0 commit comments

Comments
 (0)