aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2017-01-09 09:49:28 -0500
committerTejun Heo <tj@kernel.org>2017-01-09 10:22:21 -0500
commitfb1b8b117531f217e7d332bdc5cbdf8ebb077ea5 (patch)
tree71b91db01fb9ced140ba02de61ed3f0a7ec28038
parent368e5fbdfc60732643f34f538823ed4bc8829827 (diff)
libata-eh: Use switch() instead of sparse array for protocol strings
Replace the sparse 256-pointer array for looking up protocol strings by a switch() statement to reduce kernel size. According to bloat-o-meter, this saves 910 bytes on m68k (32-bit), and 1892 bytes on arm64 (64-bit). Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r--drivers/ata/libata-eh.c44
1 files changed, 31 insertions, 13 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 0e1ec37070d1..e7196fc29ff0 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2606,21 +2606,39 @@ static void ata_eh_link_report(struct ata_link *link)
2606 [DMA_TO_DEVICE] = "out", 2606 [DMA_TO_DEVICE] = "out",
2607 [DMA_FROM_DEVICE] = "in", 2607 [DMA_FROM_DEVICE] = "in",
2608 }; 2608 };
2609 static const char *prot_str[] = { 2609 const char *prot_str = NULL;
2610 [ATA_PROT_UNKNOWN] = "unknown",
2611 [ATA_PROT_NODATA] = "nodata",
2612 [ATA_PROT_PIO] = "pio",
2613 [ATA_PROT_DMA] = "dma",
2614 [ATA_PROT_NCQ] = "ncq dma",
2615 [ATA_PROT_NCQ_NODATA] = "ncq nodata",
2616 [ATAPI_PROT_NODATA] = "nodata",
2617 [ATAPI_PROT_PIO] = "pio",
2618 [ATAPI_PROT_DMA] = "dma",
2619 };
2620 2610
2611 switch (qc->tf.protocol) {
2612 case ATA_PROT_UNKNOWN:
2613 prot_str = "unknown";
2614 break;
2615 case ATA_PROT_NODATA:
2616 prot_str = "nodata";
2617 break;
2618 case ATA_PROT_PIO:
2619 prot_str = "pio";
2620 break;
2621 case ATA_PROT_DMA:
2622 prot_str = "dma";
2623 break;
2624 case ATA_PROT_NCQ:
2625 prot_str = "ncq dma";
2626 break;
2627 case ATA_PROT_NCQ_NODATA:
2628 prot_str = "ncq nodata";
2629 break;
2630 case ATAPI_PROT_NODATA:
2631 prot_str = "nodata";
2632 break;
2633 case ATAPI_PROT_PIO:
2634 prot_str = "pio";
2635 break;
2636 case ATAPI_PROT_DMA:
2637 prot_str = "dma";
2638 break;
2639 }
2621 snprintf(data_buf, sizeof(data_buf), " %s %u %s", 2640 snprintf(data_buf, sizeof(data_buf), " %s %u %s",
2622 prot_str[qc->tf.protocol], qc->nbytes, 2641 prot_str, qc->nbytes, dma_str[qc->dma_dir]);
2623 dma_str[qc->dma_dir]);
2624 } 2642 }
2625 2643
2626 if (ata_is_atapi(qc->tf.protocol)) { 2644 if (ata_is_atapi(qc->tf.protocol)) {