@@ -71,6 +71,32 @@ static void nvmet_execute_get_log_page_error(struct nvmet_req *req)
71
71
nvmet_req_complete (req , 0 );
72
72
}
73
73
74
+ static void nvmet_execute_get_supported_log_pages (struct nvmet_req * req )
75
+ {
76
+ struct nvme_supported_log * logs ;
77
+ u16 status ;
78
+
79
+ logs = kzalloc (sizeof (* logs ), GFP_KERNEL );
80
+ if (!logs ) {
81
+ status = NVME_SC_INTERNAL ;
82
+ goto out ;
83
+ }
84
+
85
+ logs -> lids [NVME_LOG_SUPPORTED ] = cpu_to_le32 (NVME_LIDS_LSUPP );
86
+ logs -> lids [NVME_LOG_ERROR ] = cpu_to_le32 (NVME_LIDS_LSUPP );
87
+ logs -> lids [NVME_LOG_SMART ] = cpu_to_le32 (NVME_LIDS_LSUPP );
88
+ logs -> lids [NVME_LOG_FW_SLOT ] = cpu_to_le32 (NVME_LIDS_LSUPP );
89
+ logs -> lids [NVME_LOG_CHANGED_NS ] = cpu_to_le32 (NVME_LIDS_LSUPP );
90
+ logs -> lids [NVME_LOG_CMD_EFFECTS ] = cpu_to_le32 (NVME_LIDS_LSUPP );
91
+ logs -> lids [NVME_LOG_ANA ] = cpu_to_le32 (NVME_LIDS_LSUPP );
92
+ logs -> lids [NVME_LOG_RESERVATION ] = cpu_to_le32 (NVME_LIDS_LSUPP );
93
+
94
+ status = nvmet_copy_to_sgl (req , 0 , logs , sizeof (* logs ));
95
+ kfree (logs );
96
+ out :
97
+ nvmet_req_complete (req , status );
98
+ }
99
+
74
100
static u16 nvmet_get_smart_log_nsid (struct nvmet_req * req ,
75
101
struct nvme_smart_log * slog )
76
102
{
@@ -327,6 +353,8 @@ static void nvmet_execute_get_log_page(struct nvmet_req *req)
327
353
return ;
328
354
329
355
switch (req -> cmd -> get_log_page .lid ) {
356
+ case NVME_LOG_SUPPORTED :
357
+ return nvmet_execute_get_supported_log_pages (req );
330
358
case NVME_LOG_ERROR :
331
359
return nvmet_execute_get_log_page_error (req );
332
360
case NVME_LOG_SMART :
0 commit comments