OSDN Git Service

block: Allow t10-pi to be modular
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 23 Dec 2019 08:13:51 +0000 (16:13 +0800)
committerJens Axboe <axboe@kernel.dk>
Tue, 7 Jan 2020 03:59:04 +0000 (20:59 -0700)
Currently t10-pi can only be built into the block layer which via
crc-t10dif pulls in a whole chunk of the Crypto API.  In fact all
users of t10-pi work as modules and there is no reason for it to
always be built-in.

This patch adds a new hidden option for t10-pi that is selected
automatically based on BLK_DEV_INTEGRITY and whether the users
of t10-pi are built-in or not.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/Kconfig
block/Makefile
block/t10-pi.c
drivers/nvme/host/Kconfig
drivers/scsi/Kconfig

index c23094a..3bc76bb 100644 (file)
@@ -66,7 +66,6 @@ config BLK_DEV_BSGLIB
 
 config BLK_DEV_INTEGRITY
        bool "Block layer data integrity support"
-       select CRC_T10DIF if BLK_DEV_INTEGRITY
        ---help---
        Some storage devices allow extra information to be
        stored/retrieved to help protect the data.  The block layer
@@ -77,6 +76,11 @@ config BLK_DEV_INTEGRITY
        T10/SCSI Data Integrity Field or the T13/ATA External Path
        Protection.  If in doubt, say N.
 
+config BLK_DEV_INTEGRITY_T10
+       tristate
+       depends on BLK_DEV_INTEGRITY
+       select CRC_T10DIF
+
 config BLK_DEV_ZONED
        bool "Zoned block device support"
        select MQ_IOSCHED_DEADLINE
index 205a5f2..f6cef6d 100644 (file)
@@ -27,7 +27,8 @@ obj-$(CONFIG_IOSCHED_BFQ)     += bfq.o
 
 obj-$(CONFIG_BLOCK_COMPAT)     += compat_ioctl.o
 obj-$(CONFIG_BLK_CMDLINE_PARSER)       += cmdline-parser.o
-obj-$(CONFIG_BLK_DEV_INTEGRITY) += bio-integrity.o blk-integrity.o t10-pi.o
+obj-$(CONFIG_BLK_DEV_INTEGRITY) += bio-integrity.o blk-integrity.o
+obj-$(CONFIG_BLK_DEV_INTEGRITY_T10)    += t10-pi.o
 obj-$(CONFIG_BLK_MQ_PCI)       += blk-mq-pci.o
 obj-$(CONFIG_BLK_MQ_VIRTIO)    += blk-mq-virtio.o
 obj-$(CONFIG_BLK_MQ_RDMA)      += blk-mq-rdma.o
index f4907d9..d910534 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/t10-pi.h>
 #include <linux/blkdev.h>
 #include <linux/crc-t10dif.h>
+#include <linux/module.h>
 #include <net/checksum.h>
 
 typedef __be16 (csum_fn) (void *, unsigned int);
@@ -280,3 +281,5 @@ const struct blk_integrity_profile t10_pi_type3_ip = {
        .complete_fn            = t10_pi_type3_complete,
 };
 EXPORT_SYMBOL(t10_pi_type3_ip);
+
+MODULE_LICENSE("GPL");
index c643963..b9358db 100644 (file)
@@ -1,6 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config NVME_CORE
        tristate
+       select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
 
 config BLK_DEV_NVME
        tristate "NVM Express block device"
index 90cf469..a7881f8 100644 (file)
@@ -68,6 +68,7 @@ comment "SCSI support type (disk, tape, CD-ROM)"
 config BLK_DEV_SD
        tristate "SCSI disk support"
        depends on SCSI
+       select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
        ---help---
          If you want to use SCSI hard disks, Fibre Channel disks,
          Serial ATA (SATA) or Parallel ATA (PATA) hard disks,