Skip to content

Commit c3e374a

Browse files
francispravin5igaw
authored andcommitted
nvme-print: print the new fields added in Sanitize log - TP4152
Print the new fields added in Sanitize log as part of TP4152. TP4152 - Post-Sanitize Media Verification 2024.04.01 Ratified. Signed-off-by: Francis Pravin <[email protected]> Reviewed-by: Steven Seungcheol Lee <[email protected]>
1 parent 32b7196 commit c3e374a

File tree

4 files changed

+74
-3
lines changed

4 files changed

+74
-3
lines changed

nvme-print-json.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1375,16 +1375,22 @@ static void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log,
13751375
struct json_object *r = json_create_object();
13761376
struct json_object *dev = json_create_object();
13771377
struct json_object *sstat = json_create_object();
1378-
__u16 status = le16_to_cpu(sanitize_log->sstat);
1378+
struct json_object *ssi = json_create_object();
13791379
const char *status_str;
1380+
__u16 status, sos;
1381+
__u8 fails, sans;
13801382
char str[128];
13811383

1384+
status = le16_to_cpu(sanitize_log->sstat);
1385+
13821386
obj_add_int(dev, "sprog", le16_to_cpu(sanitize_log->sprog));
1387+
obj_add_int(sstat, "media_verification_canceled", NVME_GET(status, SANITIZE_SSTAT_MVCNCLD));
13831388
obj_add_int(sstat, "global_erased", NVME_GET(status, SANITIZE_SSTAT_GLOBAL_DATA_ERASED));
13841389
obj_add_int(sstat, "no_cmplted_passes", NVME_GET(status, SANITIZE_SSTAT_COMPLETED_PASSES));
13851390

1391+
sos = NVME_GET(status, SANITIZE_SSTAT_STATUS);
13861392
status_str = nvme_sstat_status_to_string(status);
1387-
sprintf(str, "(%d) %s", NVME_GET(status, SANITIZE_SSTAT_STATUS), status_str);
1393+
sprintf(str, "(%d) %s", sos, status_str);
13881394
obj_add_str(sstat, "status", str);
13891395

13901396
obj_add_obj(dev, "sstat", sstat);
@@ -1395,7 +1401,21 @@ static void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log,
13951401
obj_add_uint(dev, "time_over_write_no_dealloc", le32_to_cpu(sanitize_log->etond));
13961402
obj_add_uint(dev, "time_block_erase_no_dealloc", le32_to_cpu(sanitize_log->etbend));
13971403
obj_add_uint(dev, "time_crypto_erase_no_dealloc", le32_to_cpu(sanitize_log->etcend));
1404+
obj_add_uint(dev, "time_post_verification_dealloc", le32_to_cpu(sanitize_log->etpvds));
1405+
1406+
sans = NVME_GET(sanitize_log->ssi, SANITIZE_SSI_SANS);
1407+
status_str = nvme_ssi_state_to_string(sans);
1408+
sprintf(str, "(%d) %s", sans, status_str);
1409+
obj_add_str(ssi, "sanitize_state", str);
1410+
1411+
if (sos == NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED) {
1412+
fails = NVME_GET(sanitize_log->ssi, SANITIZE_SSI_FAILS);
1413+
status_str = nvme_ssi_state_to_string(fails);
1414+
sprintf(str, "(%d) %s", fails, status_str);
1415+
obj_add_str(ssi, "failure_state", str);
1416+
}
13981417

1418+
obj_add_obj(dev, "sanitize_state_information", ssi);
13991419
obj_add_obj(r, devname, dev);
14001420

14011421
json_print(r);

nvme-print-stdout.c

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4187,7 +4187,7 @@ static void stdout_sanitize_log_sprog(__u32 sprog)
41874187
static void stdout_sanitize_log_sstat(__u16 status)
41884188
{
41894189
const char *str = nvme_sstat_status_to_string(status);
4190-
__u16 gde;
4190+
__u16 gde, mvcncld;
41914191

41924192
printf(" [2:0] : Sanitize Operation Status : %#x\t%s\n",
41934193
NVME_GET(status, SANITIZE_SSTAT_STATUS), str);
@@ -4202,6 +4202,11 @@ static void stdout_sanitize_log_sstat(__u16 status)
42024202
str = "User data has been written in the NVM subsystem or"\
42034203
" PMR has been enabled in the NVM subsystem";
42044204
printf(" [8:8] : Global Data Erased : %#x\t%s\n", gde, str);
4205+
4206+
mvcncld = NVME_GET(status, SANITIZE_SSTAT_MVCNCLD);
4207+
printf(" [9:9] : Media Verification Canceled: %#x\t%scanceled\n",
4208+
mvcncld, mvcncld ? "" : "Not ");
4209+
printf("\n");
42054210
}
42064211

42074212
static void stdout_estimate_sanitize_time(const char *text, uint32_t value)
@@ -4210,6 +4215,23 @@ static void stdout_estimate_sanitize_time(const char *text, uint32_t value)
42104215
value == 0xffffffff ? " (No time period reported)" : "");
42114216
}
42124217

4218+
static void stdout_sanitize_log_ssi(__u8 ssi, __u16 status)
4219+
{
4220+
__u8 sans, fails;
4221+
const char *str;
4222+
4223+
sans = NVME_GET(ssi, SANITIZE_SSI_SANS);
4224+
str = nvme_ssi_state_to_string(sans);
4225+
printf(" [3:0] : Sanitize State : %#x\t%s\n", sans, str);
4226+
4227+
if (status == NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED) {
4228+
fails = NVME_GET(ssi, SANITIZE_SSI_FAILS);
4229+
str = nvme_ssi_state_to_string(fails);
4230+
printf(" [7:4] : Failure State : %#x\t%s\n", fails, str);
4231+
}
4232+
printf("\n");
4233+
}
4234+
42134235
static void stdout_sanitize_log(struct nvme_sanitize_log_page *sanitize,
42144236
const char *devname)
42154237
{
@@ -4243,6 +4265,12 @@ static void stdout_sanitize_log(struct nvme_sanitize_log_page *sanitize,
42434265
le32_to_cpu(sanitize->etbend));
42444266
stdout_estimate_sanitize_time("Estimated Time For Crypto Erase (No-Deallocate)",
42454267
le32_to_cpu(sanitize->etcend));
4268+
stdout_estimate_sanitize_time("Estimated Time For Post-Verification Deallocation",
4269+
le32_to_cpu(sanitize->etpvds));
4270+
4271+
printf("Sanitize State Information (SSI) : %#x\n", sanitize->ssi);
4272+
if (human)
4273+
stdout_sanitize_log_ssi(sanitize->ssi, status);
42464274
}
42474275

42484276
static void stdout_select_result(enum nvme_features_id fid, __u32 result)

nvme-print.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,6 +1185,28 @@ const char *nvme_pel_ehai_pit_to_string(enum nvme_pel_ehai_pit pit)
11851185
return "Reserved";
11861186
}
11871187

1188+
const char *nvme_ssi_state_to_string(__u8 state)
1189+
{
1190+
switch (state) {
1191+
case NVME_SANITIZE_SSI_IDLE:
1192+
return "Idle state";
1193+
case NVME_SANITIZE_SSI_RESTRICT_PROCESSING:
1194+
return "Restricted Processing State";
1195+
case NVME_SANITIZE_SSI_RESTRICT_FAILURE:
1196+
return "Restricted Failure State";
1197+
case NVME_SANITIZE_SSI_UNRESTRICT_PROCESSING:
1198+
return "Unrestricted Processing State";
1199+
case NVME_SANITIZE_SSI_UNRESTRICT_FAILURE:
1200+
return "Unrestricted Failure State";
1201+
case NVME_SANITIZE_SSI_MEDIA_VERIFICATION:
1202+
return "Media Verification State";
1203+
case NVME_SANITIZE_SSI_POST_VERIF_DEALLOC:
1204+
return "Post-Verification Deallocation State";
1205+
default:
1206+
return "Reserved";
1207+
}
1208+
}
1209+
11881210
const char *nvme_register_symbol_to_string(int offset)
11891211
{
11901212
switch (offset) {

nvme-print.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ const char *nvme_plm_window_to_string(__u32 plm);
314314
const char *nvme_ns_wp_cfg_to_string(enum nvme_ns_write_protect_cfg state);
315315
const char *nvme_pel_rci_rcpit_to_string(enum nvme_pel_rci_rcpit rcpit);
316316
const char *nvme_pel_ehai_pit_to_string(enum nvme_pel_ehai_pit pit);
317+
const char *nvme_ssi_state_to_string(__u8 state);
317318

318319
void nvme_dev_full_path(nvme_ns_t n, char *path, size_t len);
319320
void nvme_generic_full_path(nvme_ns_t n, char *path, size_t len);

0 commit comments

Comments
 (0)