Adding upstream version 2.12.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
65508f0a28
commit
c0fbec1eb4
571 changed files with 10718 additions and 2738 deletions
|
@ -14,10 +14,10 @@
|
|||
#include "common.h"
|
||||
#include "nvme-print.h"
|
||||
#include "ocp-print.h"
|
||||
#include "ocp-utils.h"
|
||||
|
||||
/* C0 SCAO Log Page */
|
||||
#define C0_SMART_CLOUD_ATTR_LEN 0x200
|
||||
#define C0_SMART_CLOUD_ATTR_OPCODE 0xC0
|
||||
|
||||
static __u8 scao_guid[GUID_LEN] = {
|
||||
0xC5, 0xAF, 0x10, 0x28,
|
||||
|
@ -26,12 +26,21 @@ static __u8 scao_guid[GUID_LEN] = {
|
|||
0xC9, 0x14, 0xD5, 0xAF
|
||||
};
|
||||
|
||||
static int get_c0_log_page(int fd, char *format)
|
||||
static int get_c0_log_page(struct nvme_dev *dev, char *format,
|
||||
unsigned int format_version)
|
||||
{
|
||||
nvme_print_flags_t fmt;
|
||||
__u8 *data;
|
||||
struct ocp_smart_extended_log *data;
|
||||
int i;
|
||||
int ret;
|
||||
int fd = dev_fd(dev);
|
||||
struct nvme_get_log_args args = {
|
||||
.args_size = sizeof(args),
|
||||
.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
|
||||
.lid = (enum nvme_cmd_get_log_lid)OCP_LID_SMART,
|
||||
.nsid = NVME_NSID_ALL,
|
||||
.len = C0_SMART_CLOUD_ATTR_LEN,
|
||||
};
|
||||
|
||||
ret = validate_output_format(format, &fmt);
|
||||
if (ret < 0) {
|
||||
|
@ -46,8 +55,9 @@ static int get_c0_log_page(int fd, char *format)
|
|||
}
|
||||
memset(data, 0, sizeof(__u8) * C0_SMART_CLOUD_ATTR_LEN);
|
||||
|
||||
ret = nvme_get_log_simple(fd, C0_SMART_CLOUD_ATTR_OPCODE,
|
||||
C0_SMART_CLOUD_ATTR_LEN, data);
|
||||
args.log = data;
|
||||
ocp_get_uuid_index(dev, &args.uuidx);
|
||||
ret = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
|
||||
|
||||
if (strcmp(format, "json"))
|
||||
fprintf(stderr, "NVMe Status:%s(%x)\n",
|
||||
|
@ -57,7 +67,7 @@ static int get_c0_log_page(int fd, char *format)
|
|||
/* check log page guid */
|
||||
/* Verify GUID matches */
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (scao_guid[i] != data[SCAO_LPG + i]) {
|
||||
if (scao_guid[i] != data->log_page_guid[i]) {
|
||||
int j;
|
||||
|
||||
fprintf(stderr, "ERROR : OCP : Unknown GUID in C0 Log Page data\n");
|
||||
|
@ -67,7 +77,7 @@ static int get_c0_log_page(int fd, char *format)
|
|||
|
||||
fprintf(stderr, "\nERROR : OCP : Actual GUID: 0x");
|
||||
for (j = 0; j < 16; j++)
|
||||
fprintf(stderr, "%x", data[SCAO_LPG + j]);
|
||||
fprintf(stderr, "%x", data->log_page_guid[j]);
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
ret = -1;
|
||||
|
@ -76,7 +86,7 @@ static int get_c0_log_page(int fd, char *format)
|
|||
}
|
||||
|
||||
/* print the data */
|
||||
ocp_smart_extended_log(data, fmt);
|
||||
ocp_smart_extended_log(data, format_version, fmt);
|
||||
} else {
|
||||
fprintf(stderr, "ERROR : OCP : Unable to read C0 data from buffer\n");
|
||||
}
|
||||
|
@ -95,14 +105,17 @@ int ocp_smart_add_log(int argc, char **argv, struct command *cmd,
|
|||
|
||||
struct config {
|
||||
char *output_format;
|
||||
unsigned int output_format_version;
|
||||
};
|
||||
|
||||
struct config cfg = {
|
||||
.output_format = "normal",
|
||||
.output_format_version = 1,
|
||||
};
|
||||
|
||||
OPT_ARGS(opts) = {
|
||||
OPT_FMT("output-format", 'o', &cfg.output_format, "output Format: normal|json"),
|
||||
OPT_UINT("output-format-version", 0, &cfg.output_format_version, "output Format version: 1|2"),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
|
@ -110,7 +123,8 @@ int ocp_smart_add_log(int argc, char **argv, struct command *cmd,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = get_c0_log_page(dev_fd(dev), cfg.output_format);
|
||||
ret = get_c0_log_page(dev, cfg.output_format,
|
||||
cfg.output_format_version);
|
||||
if (ret)
|
||||
fprintf(stderr, "ERROR : OCP : Failure reading the C0 Log Page, ret = %d\n",
|
||||
ret);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue