-
Notifications
You must be signed in to change notification settings - Fork 668
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
plugins/solidigm: Added OCP 2.0 vs-drive-info command.
Signed-off-by: Leonardo da Cunha <[email protected]>
- Loading branch information
Showing
5 changed files
with
96 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
/* | ||
* Copyright (c) 2023 Solidigm. | ||
* | ||
* Authors: [email protected] | ||
*/ | ||
|
||
#include <errno.h> | ||
#include "nvme-print.h" | ||
#include "nvme-wrap.h" | ||
#include "common.h" | ||
|
||
int sldgm_get_drive_info(int argc, char **argv, struct command *cmd, struct plugin *plugin) | ||
{ | ||
_cleanup_nvme_dev_ struct nvme_dev *dev = NULL; | ||
const char *desc = "Get drive HW information"; | ||
const char *FTL_unit_size_str = "FTL_unit_size"; | ||
char *output_format = "normal"; | ||
enum nvme_print_flags flags; | ||
nvme_root_t r; | ||
nvme_ctrl_t c; | ||
nvme_ns_t n; | ||
struct nvme_id_ns ns = { 0 }; | ||
__u8 flbaf_inUse; | ||
__u16 lba_size; | ||
__u16 ftl_unit_size; | ||
int err; | ||
|
||
OPT_ARGS(opts) = { | ||
OPT_FMT("output-format", 'o', &output_format, "normal|json"), | ||
OPT_END() | ||
}; | ||
|
||
err = parse_and_open(&dev, argc, argv, desc, opts); | ||
if (err) | ||
return err; | ||
|
||
err = validate_output_format(output_format, &flags); | ||
if ((err < 0) || !(flags == NORMAL || flags == JSON)) { | ||
nvme_show_error("Invalid output format"); | ||
return err; | ||
} | ||
|
||
r = nvme_scan(NULL); | ||
c = nvme_scan_ctrl(r, dev->name); | ||
n = c ? nvme_ctrl_first_ns(c) : nvme_scan_namespace(dev->name); | ||
if (!n) { | ||
nvme_show_error("solidigm-vs-drive-info: drive missing namespace"); | ||
return -EINVAL; | ||
} | ||
|
||
err = nvme_ns_identify(n, &ns); | ||
if (err) { | ||
nvme_show_error("identify namespace: %s", nvme_strerror(errno)); | ||
return err; | ||
} | ||
|
||
if (!(ns.nsfeat & 0x10)) { | ||
nvme_show_error("solidigm-vs-drive-info: performance options not available"); | ||
return -EINVAL; | ||
} | ||
|
||
nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &flbaf_inUse); | ||
lba_size = 1 << ns.lbaf[flbaf_inUse].ds; | ||
ftl_unit_size = (le16_to_cpu(ns.npwg) + 1) * lba_size / 1024; | ||
|
||
if (flags == JSON) { | ||
struct json_object *root = json_create_object(); | ||
|
||
json_object_add_value_int(root, FTL_unit_size_str, ftl_unit_size); | ||
json_print_object(root, NULL); | ||
printf("\n"); | ||
json_free_object(root); | ||
} else { | ||
printf("%s: %d\n", FTL_unit_size_str, ftl_unit_size); | ||
} | ||
|
||
return err; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-or-later */ | ||
/* | ||
* Copyright (c) 2023 Solidigm. | ||
* | ||
* Author: [email protected] | ||
*/ | ||
|
||
int sldgm_get_drive_info(int argc, char **argv, struct command *cmd, struct plugin *plugin); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters