Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: libsas: Introduce more SAM status code aliases in enum exec_status

This patch prepares for converting SAM status codes into an enum. Without
this patch converting SAM status codes into an enumeration type would
trigger complaints about enum type mismatches for the SAS code.

Link: https://lore.kernel.org/r/20210524025457.11299-2-bvanassche@acm.org
Cc: Hannes Reinecke <hare@suse.com>
Cc: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Cc: Jason Yan <yanaijie@huawei.com>
Reviewed-by: John Garry <john.garry@huawei.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Bart Van Assche and committed by
Martin K. Petersen
d377f415 1ff28f22

+57 -50
+1 -1
drivers/scsi/aic94xx/aic94xx_task.c
··· 205 205 switch (opcode) { 206 206 case TC_NO_ERROR: 207 207 ts->resp = SAS_TASK_COMPLETE; 208 - ts->stat = SAM_STAT_GOOD; 208 + ts->stat = SAS_SAM_STAT_GOOD; 209 209 break; 210 210 case TC_UNDERRUN: 211 211 ts->resp = SAS_TASK_COMPLETE;
+4 -4
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
··· 1152 1152 } 1153 1153 default: 1154 1154 { 1155 - ts->stat = SAM_STAT_CHECK_CONDITION; 1155 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 1156 1156 break; 1157 1157 } 1158 1158 } 1159 1159 } 1160 1160 break; 1161 1161 case SAS_PROTOCOL_SMP: 1162 - ts->stat = SAM_STAT_CHECK_CONDITION; 1162 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 1163 1163 break; 1164 1164 1165 1165 case SAS_PROTOCOL_SATA: ··· 1281 1281 struct scatterlist *sg_resp = &task->smp_task.smp_resp; 1282 1282 void *to = page_address(sg_page(sg_resp)); 1283 1283 1284 - ts->stat = SAM_STAT_GOOD; 1284 + ts->stat = SAS_SAM_STAT_GOOD; 1285 1285 1286 1286 dma_unmap_sg(dev, &task->smp_task.smp_req, 1, 1287 1287 DMA_TO_DEVICE); ··· 1298 1298 break; 1299 1299 1300 1300 default: 1301 - ts->stat = SAM_STAT_CHECK_CONDITION; 1301 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 1302 1302 break; 1303 1303 } 1304 1304
+4 -4
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
··· 2168 2168 } 2169 2169 break; 2170 2170 case SAS_PROTOCOL_SMP: 2171 - ts->stat = SAM_STAT_CHECK_CONDITION; 2171 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 2172 2172 break; 2173 2173 2174 2174 case SAS_PROTOCOL_SATA: ··· 2427 2427 struct scatterlist *sg_resp = &task->smp_task.smp_resp; 2428 2428 void *to = page_address(sg_page(sg_resp)); 2429 2429 2430 - ts->stat = SAM_STAT_GOOD; 2430 + ts->stat = SAS_SAM_STAT_GOOD; 2431 2431 2432 2432 dma_unmap_sg(dev, &task->smp_task.smp_req, 1, 2433 2433 DMA_TO_DEVICE); ··· 2441 2441 case SAS_PROTOCOL_STP: 2442 2442 case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP: 2443 2443 { 2444 - ts->stat = SAM_STAT_GOOD; 2444 + ts->stat = SAS_SAM_STAT_GOOD; 2445 2445 hisi_sas_sata_done(task, slot); 2446 2446 break; 2447 2447 } 2448 2448 default: 2449 - ts->stat = SAM_STAT_CHECK_CONDITION; 2449 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 2450 2450 break; 2451 2451 } 2452 2452
+4 -4
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
··· 2178 2178 hisi_sas_sata_done(task, slot); 2179 2179 break; 2180 2180 case SAS_PROTOCOL_SMP: 2181 - ts->stat = SAM_STAT_CHECK_CONDITION; 2181 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 2182 2182 break; 2183 2183 default: 2184 2184 break; ··· 2285 2285 struct scatterlist *sg_resp = &task->smp_task.smp_resp; 2286 2286 void *to = page_address(sg_page(sg_resp)); 2287 2287 2288 - ts->stat = SAM_STAT_GOOD; 2288 + ts->stat = SAS_SAM_STAT_GOOD; 2289 2289 2290 2290 dma_unmap_sg(dev, &task->smp_task.smp_req, 1, 2291 2291 DMA_TO_DEVICE); ··· 2298 2298 case SAS_PROTOCOL_SATA: 2299 2299 case SAS_PROTOCOL_STP: 2300 2300 case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP: 2301 - ts->stat = SAM_STAT_GOOD; 2301 + ts->stat = SAS_SAM_STAT_GOOD; 2302 2302 hisi_sas_sata_done(task, slot); 2303 2303 break; 2304 2304 default: 2305 - ts->stat = SAM_STAT_CHECK_CONDITION; 2305 + ts->stat = SAS_SAM_STAT_CHECK_CONDITION; 2306 2306 break; 2307 2307 } 2308 2308
+5 -5
drivers/scsi/isci/request.c
··· 2566 2566 if (!idev) 2567 2567 *status_ptr = SAS_DEVICE_UNKNOWN; 2568 2568 else 2569 - *status_ptr = SAM_STAT_TASK_ABORTED; 2569 + *status_ptr = SAS_SAM_STAT_TASK_ABORTED; 2570 2570 2571 2571 clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags); 2572 2572 } ··· 2696 2696 default: 2697 2697 /* Task in the target is not done. */ 2698 2698 *response_ptr = SAS_TASK_UNDELIVERED; 2699 - *status_ptr = SAM_STAT_TASK_ABORTED; 2699 + *status_ptr = SAS_SAM_STAT_TASK_ABORTED; 2700 2700 2701 2701 if (task->task_proto == SAS_PROTOCOL_SMP) 2702 2702 set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags); ··· 2719 2719 if (ac_err_mask(fis->status)) 2720 2720 ts->stat = SAS_PROTO_RESPONSE; 2721 2721 else 2722 - ts->stat = SAM_STAT_GOOD; 2722 + ts->stat = SAS_SAM_STAT_GOOD; 2723 2723 2724 2724 ts->resp = SAS_TASK_COMPLETE; 2725 2725 } ··· 2782 2782 case SCI_IO_SUCCESS_IO_DONE_EARLY: 2783 2783 2784 2784 response = SAS_TASK_COMPLETE; 2785 - status = SAM_STAT_GOOD; 2785 + status = SAS_SAM_STAT_GOOD; 2786 2786 set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags); 2787 2787 2788 2788 if (completion_status == SCI_IO_SUCCESS_IO_DONE_EARLY) { ··· 2852 2852 2853 2853 /* Fail the I/O. */ 2854 2854 response = SAS_TASK_UNDELIVERED; 2855 - status = SAM_STAT_TASK_ABORTED; 2855 + status = SAS_SAM_STAT_TASK_ABORTED; 2856 2856 2857 2857 clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags); 2858 2858 break;
+1 -1
drivers/scsi/isci/task.c
··· 160 160 161 161 isci_task_refuse(ihost, task, 162 162 SAS_TASK_UNDELIVERED, 163 - SAM_STAT_TASK_ABORTED); 163 + SAS_SAM_STAT_TASK_ABORTED); 164 164 } else { 165 165 task->task_state_flags |= SAS_TASK_AT_INITIATOR; 166 166 spin_unlock_irqrestore(&task->task_state_lock, flags);
+4 -3
drivers/scsi/libsas/sas_ata.c
··· 116 116 } 117 117 } 118 118 119 - if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD || 120 - ((stat->stat == SAM_STAT_CHECK_CONDITION && 121 - dev->sata_dev.class == ATA_DEV_ATAPI))) { 119 + if (stat->stat == SAS_PROTO_RESPONSE || 120 + stat->stat == SAS_SAM_STAT_GOOD || 121 + (stat->stat == SAS_SAM_STAT_CHECK_CONDITION && 122 + dev->sata_dev.class == ATA_DEV_ATAPI)) { 122 123 memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE); 123 124 124 125 if (!link->sactive) {
+1 -1
drivers/scsi/libsas/sas_expander.c
··· 101 101 } 102 102 } 103 103 if (task->task_status.resp == SAS_TASK_COMPLETE && 104 - task->task_status.stat == SAM_STAT_GOOD) { 104 + task->task_status.stat == SAS_SAM_STAT_GOOD) { 105 105 res = 0; 106 106 break; 107 107 }
+2 -2
drivers/scsi/libsas/sas_task.c
··· 20 20 else if (iu->datapres == 1) 21 21 tstat->stat = iu->resp_data[3]; 22 22 else if (iu->datapres == 2) { 23 - tstat->stat = SAM_STAT_CHECK_CONDITION; 23 + tstat->stat = SAS_SAM_STAT_CHECK_CONDITION; 24 24 tstat->buf_valid_size = 25 25 min_t(int, SAS_STATUS_BUF_SIZE, 26 26 be32_to_cpu(iu->sense_data_len)); ··· 32 32 } 33 33 else 34 34 /* when datapres contains corrupt/unknown value... */ 35 - tstat->stat = SAM_STAT_CHECK_CONDITION; 35 + tstat->stat = SAS_SAM_STAT_CHECK_CONDITION; 36 36 } 37 37 EXPORT_SYMBOL_GPL(sas_ssp_task_response); 38 38
+5 -5
drivers/scsi/mvsas/mv_sas.c
··· 1314 1314 } 1315 1315 1316 1316 if (task->task_status.resp == SAS_TASK_COMPLETE && 1317 - task->task_status.stat == SAM_STAT_GOOD) { 1317 + task->task_status.stat == SAS_SAM_STAT_GOOD) { 1318 1318 res = TMF_RESP_FUNC_COMPLETE; 1319 1319 break; 1320 1320 } ··· 1764 1764 case SAS_PROTOCOL_SSP: 1765 1765 /* hw says status == 0, datapres == 0 */ 1766 1766 if (rx_desc & RXQ_GOOD) { 1767 - tstat->stat = SAM_STAT_GOOD; 1767 + tstat->stat = SAS_SAM_STAT_GOOD; 1768 1768 tstat->resp = SAS_TASK_COMPLETE; 1769 1769 } 1770 1770 /* response frame present */ ··· 1773 1773 sizeof(struct mvs_err_info); 1774 1774 sas_ssp_task_response(mvi->dev, task, iu); 1775 1775 } else 1776 - tstat->stat = SAM_STAT_CHECK_CONDITION; 1776 + tstat->stat = SAS_SAM_STAT_CHECK_CONDITION; 1777 1777 break; 1778 1778 1779 1779 case SAS_PROTOCOL_SMP: { 1780 1780 struct scatterlist *sg_resp = &task->smp_task.smp_resp; 1781 - tstat->stat = SAM_STAT_GOOD; 1781 + tstat->stat = SAS_SAM_STAT_GOOD; 1782 1782 to = kmap_atomic(sg_page(sg_resp)); 1783 1783 memcpy(to + sg_resp->offset, 1784 1784 slot->response + sizeof(struct mvs_err_info), ··· 1795 1795 } 1796 1796 1797 1797 default: 1798 - tstat->stat = SAM_STAT_CHECK_CONDITION; 1798 + tstat->stat = SAS_SAM_STAT_CHECK_CONDITION; 1799 1799 break; 1800 1800 } 1801 1801 if (!slot->port->port_attached) {
+8 -8
drivers/scsi/pm8001/pm8001_hwi.c
··· 1930 1930 param); 1931 1931 if (param == 0) { 1932 1932 ts->resp = SAS_TASK_COMPLETE; 1933 - ts->stat = SAM_STAT_GOOD; 1933 + ts->stat = SAS_SAM_STAT_GOOD; 1934 1934 } else { 1935 1935 ts->resp = SAS_TASK_COMPLETE; 1936 1936 ts->stat = SAS_PROTO_RESPONSE; ··· 2390 2390 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n"); 2391 2391 if (param == 0) { 2392 2392 ts->resp = SAS_TASK_COMPLETE; 2393 - ts->stat = SAM_STAT_GOOD; 2393 + ts->stat = SAS_SAM_STAT_GOOD; 2394 2394 /* check if response is for SEND READ LOG */ 2395 2395 if (pm8001_dev && 2396 2396 (pm8001_dev->id & NCQ_READ_LOG_FLAG)) { ··· 2912 2912 case IO_SUCCESS: 2913 2913 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n"); 2914 2914 ts->resp = SAS_TASK_COMPLETE; 2915 - ts->stat = SAM_STAT_GOOD; 2915 + ts->stat = SAS_SAM_STAT_GOOD; 2916 2916 if (pm8001_dev) 2917 2917 atomic_dec(&pm8001_dev->running_req); 2918 2918 break; ··· 2939 2939 case IO_ERROR_HW_TIMEOUT: 2940 2940 pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n"); 2941 2941 ts->resp = SAS_TASK_COMPLETE; 2942 - ts->stat = SAM_STAT_BUSY; 2942 + ts->stat = SAS_SAM_STAT_BUSY; 2943 2943 break; 2944 2944 case IO_XFER_ERROR_BREAK: 2945 2945 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n"); 2946 2946 ts->resp = SAS_TASK_COMPLETE; 2947 - ts->stat = SAM_STAT_BUSY; 2947 + ts->stat = SAS_SAM_STAT_BUSY; 2948 2948 break; 2949 2949 case IO_XFER_ERROR_PHY_NOT_READY: 2950 2950 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n"); 2951 2951 ts->resp = SAS_TASK_COMPLETE; 2952 - ts->stat = SAM_STAT_BUSY; 2952 + ts->stat = SAS_SAM_STAT_BUSY; 2953 2953 break; 2954 2954 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED: 2955 2955 pm8001_dbg(pm8001_ha, IO, ··· 3710 3710 case IO_SUCCESS: 3711 3711 pm8001_dbg(pm8001_ha, EH, "IO_SUCCESS\n"); 3712 3712 ts->resp = SAS_TASK_COMPLETE; 3713 - ts->stat = SAM_STAT_GOOD; 3713 + ts->stat = SAS_SAM_STAT_GOOD; 3714 3714 break; 3715 3715 case IO_NOT_VALID: 3716 3716 pm8001_dbg(pm8001_ha, EH, "IO_NOT_VALID\n"); ··· 4355 4355 4356 4356 spin_lock_irqsave(&task->task_state_lock, flags); 4357 4357 ts->resp = SAS_TASK_COMPLETE; 4358 - ts->stat = SAM_STAT_GOOD; 4358 + ts->stat = SAS_SAM_STAT_GOOD; 4359 4359 task->task_state_flags &= ~SAS_TASK_STATE_PENDING; 4360 4360 task->task_state_flags &= ~SAS_TASK_AT_INITIATOR; 4361 4361 task->task_state_flags |= SAS_TASK_STATE_DONE;
+2 -2
drivers/scsi/pm8001/pm8001_sas.c
··· 753 753 } 754 754 755 755 if (task->task_status.resp == SAS_TASK_COMPLETE && 756 - task->task_status.stat == SAM_STAT_GOOD) { 756 + task->task_status.stat == SAS_SAM_STAT_GOOD) { 757 757 res = TMF_RESP_FUNC_COMPLETE; 758 758 break; 759 759 } ··· 838 838 } 839 839 840 840 if (task->task_status.resp == SAS_TASK_COMPLETE && 841 - task->task_status.stat == SAM_STAT_GOOD) { 841 + task->task_status.stat == SAS_SAM_STAT_GOOD) { 842 842 res = TMF_RESP_FUNC_COMPLETE; 843 843 break; 844 844
+7 -7
drivers/scsi/pm8001/pm80xx_hwi.c
··· 1952 1952 param); 1953 1953 if (param == 0) { 1954 1954 ts->resp = SAS_TASK_COMPLETE; 1955 - ts->stat = SAM_STAT_GOOD; 1955 + ts->stat = SAS_SAM_STAT_GOOD; 1956 1956 } else { 1957 1957 ts->resp = SAS_TASK_COMPLETE; 1958 1958 ts->stat = SAS_PROTO_RESPONSE; ··· 2487 2487 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n"); 2488 2488 if (param == 0) { 2489 2489 ts->resp = SAS_TASK_COMPLETE; 2490 - ts->stat = SAM_STAT_GOOD; 2490 + ts->stat = SAS_SAM_STAT_GOOD; 2491 2491 /* check if response is for SEND READ LOG */ 2492 2492 if (pm8001_dev && 2493 2493 (pm8001_dev->id & NCQ_READ_LOG_FLAG)) { ··· 3042 3042 case IO_SUCCESS: 3043 3043 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n"); 3044 3044 ts->resp = SAS_TASK_COMPLETE; 3045 - ts->stat = SAM_STAT_GOOD; 3045 + ts->stat = SAS_SAM_STAT_GOOD; 3046 3046 if (pm8001_dev) 3047 3047 atomic_dec(&pm8001_dev->running_req); 3048 3048 if (pm8001_ha->smp_exp_mode == SMP_DIRECT) { ··· 3084 3084 case IO_ERROR_HW_TIMEOUT: 3085 3085 pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n"); 3086 3086 ts->resp = SAS_TASK_COMPLETE; 3087 - ts->stat = SAM_STAT_BUSY; 3087 + ts->stat = SAS_SAM_STAT_BUSY; 3088 3088 break; 3089 3089 case IO_XFER_ERROR_BREAK: 3090 3090 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n"); 3091 3091 ts->resp = SAS_TASK_COMPLETE; 3092 - ts->stat = SAM_STAT_BUSY; 3092 + ts->stat = SAS_SAM_STAT_BUSY; 3093 3093 break; 3094 3094 case IO_XFER_ERROR_PHY_NOT_READY: 3095 3095 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n"); 3096 3096 ts->resp = SAS_TASK_COMPLETE; 3097 - ts->stat = SAM_STAT_BUSY; 3097 + ts->stat = SAS_SAM_STAT_BUSY; 3098 3098 break; 3099 3099 case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED: 3100 3100 pm8001_dbg(pm8001_ha, IO, ··· 4699 4699 4700 4700 spin_lock_irqsave(&task->task_state_lock, flags); 4701 4701 ts->resp = SAS_TASK_COMPLETE; 4702 - ts->stat = SAM_STAT_GOOD; 4702 + ts->stat = SAS_SAM_STAT_GOOD; 4703 4703 task->task_state_flags &= ~SAS_TASK_STATE_PENDING; 4704 4704 task->task_state_flags &= ~SAS_TASK_AT_INITIATOR; 4705 4705 task->task_state_flags |= SAS_TASK_STATE_DONE;
+9 -3
include/scsi/libsas.h
··· 474 474 }; 475 475 476 476 enum exec_status { 477 - /* The SAM_STAT_.. codes fit in the lower 6 bits, alias some of 478 - * them here to silence 'case value not in enumerated type' warnings 477 + /* 478 + * Values 0..0x7f are used to return the SAM_STAT_* codes. To avoid 479 + * 'case value not in enumerated type' compiler warnings every value 480 + * returned through the exec_status enum needs an alias with the SAS_ 481 + * prefix here. 479 482 */ 480 - __SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION, 483 + SAS_SAM_STAT_GOOD = SAM_STAT_GOOD, 484 + SAS_SAM_STAT_BUSY = SAM_STAT_BUSY, 485 + SAS_SAM_STAT_TASK_ABORTED = SAM_STAT_TASK_ABORTED, 486 + SAS_SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION, 481 487 482 488 SAS_DEV_NO_RESPONSE = 0x80, 483 489 SAS_DATA_UNDERRUN,