@@ -668,21 +668,11 @@ static void nvmet_execute_identify_desclist(struct nvmet_req *req)
668668 nvmet_req_complete (req , status );
669669}
670670
671- static bool nvmet_handle_identify_desclist (struct nvmet_req * req )
671+ static void nvmet_execute_identify_ctrl_nvm (struct nvmet_req * req )
672672{
673- switch (req -> cmd -> identify .csi ) {
674- case NVME_CSI_NVM :
675- nvmet_execute_identify_desclist (req );
676- return true;
677- case NVME_CSI_ZNS :
678- if (IS_ENABLED (CONFIG_BLK_DEV_ZONED )) {
679- nvmet_execute_identify_desclist (req );
680- return true;
681- }
682- return false;
683- default :
684- return false;
685- }
673+ /* Not supported: return zeroes */
674+ nvmet_req_complete (req ,
675+ nvmet_zero_sgl (req , 0 , sizeof (struct nvme_id_ctrl_nvm )));
686676}
687677
688678static void nvmet_execute_identify (struct nvmet_req * req )
@@ -692,54 +682,49 @@ static void nvmet_execute_identify(struct nvmet_req *req)
692682
693683 switch (req -> cmd -> identify .cns ) {
694684 case NVME_ID_CNS_NS :
685+ nvmet_execute_identify_ns (req );
686+ return ;
687+ case NVME_ID_CNS_CTRL :
688+ nvmet_execute_identify_ctrl (req );
689+ return ;
690+ case NVME_ID_CNS_NS_ACTIVE_LIST :
691+ nvmet_execute_identify_nslist (req );
692+ return ;
693+ case NVME_ID_CNS_NS_DESC_LIST :
694+ nvmet_execute_identify_desclist (req );
695+ return ;
696+ case NVME_ID_CNS_CS_NS :
695697 switch (req -> cmd -> identify .csi ) {
696698 case NVME_CSI_NVM :
697- return nvmet_execute_identify_ns (req );
698- default :
699+ /* Not supported */
699700 break ;
700- }
701- break ;
702- case NVME_ID_CNS_CS_NS :
703- if (IS_ENABLED (CONFIG_BLK_DEV_ZONED )) {
704- switch (req -> cmd -> identify .csi ) {
705- case NVME_CSI_ZNS :
706- return nvmet_execute_identify_cns_cs_ns (req );
707- default :
708- break ;
701+ case NVME_CSI_ZNS :
702+ if (IS_ENABLED (CONFIG_BLK_DEV_ZONED )) {
703+ nvmet_execute_identify_ns_zns (req );
704+ return ;
709705 }
710- }
711- break ;
712- case NVME_ID_CNS_CTRL :
713- switch (req -> cmd -> identify .csi ) {
714- case NVME_CSI_NVM :
715- return nvmet_execute_identify_ctrl (req );
706+ break ;
716707 }
717708 break ;
718709 case NVME_ID_CNS_CS_CTRL :
719- if (IS_ENABLED (CONFIG_BLK_DEV_ZONED )) {
720- switch (req -> cmd -> identify .csi ) {
721- case NVME_CSI_ZNS :
722- return nvmet_execute_identify_cns_cs_ctrl (req );
723- default :
724- break ;
725- }
726- }
727- break ;
728- case NVME_ID_CNS_NS_ACTIVE_LIST :
729710 switch (req -> cmd -> identify .csi ) {
730711 case NVME_CSI_NVM :
731- return nvmet_execute_identify_nslist (req );
732- default :
712+ nvmet_execute_identify_ctrl_nvm (req );
713+ return ;
714+ case NVME_CSI_ZNS :
715+ if (IS_ENABLED (CONFIG_BLK_DEV_ZONED )) {
716+ nvmet_execute_identify_ctrl_zns (req );
717+ return ;
718+ }
733719 break ;
734720 }
735721 break ;
736- case NVME_ID_CNS_NS_DESC_LIST :
737- if (nvmet_handle_identify_desclist (req ) == true)
738- return ;
739- break ;
740722 }
741723
742- nvmet_req_cns_error_complete (req );
724+ pr_debug ("unhandled identify cns %d on qid %d\n" ,
725+ req -> cmd -> identify .cns , req -> sq -> qid );
726+ req -> error_loc = offsetof(struct nvme_identify , cns );
727+ nvmet_req_complete (req , NVME_SC_INVALID_FIELD | NVME_SC_DNR );
743728}
744729
745730/*
0 commit comments