diff mbox series

block: Allow t10-pi to be modular

Message ID 20191223081351.gsunwl6zwcltfdy6@gondor.apana.org.au (mailing list archive)
State New, archived
Headers show
Series block: Allow t10-pi to be modular | expand

Commit Message

Herbert Xu Dec. 23, 2019, 8:13 a.m. UTC
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>

Comments

Martin K. Petersen Jan. 7, 2020, 3:25 a.m. UTC | #1
Herbert,

> 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.

Looks fine to me.
Jens Axboe Jan. 7, 2020, 3:59 a.m. UTC | #2
On 1/6/20 8:25 PM, Martin K. Petersen wrote:
> 
> Herbert,
> 
>> 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.
> 
> Looks fine to me.
> 

I added it to the 5.6 mix, thanks.
Christoph Hellwig Jan. 8, 2020, 1:39 p.m. UTC | #3
On Mon, Dec 23, 2019 at 04:13:51PM +0800, Herbert Xu wrote:
> 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>

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
diff mbox series

Patch

diff --git a/block/Kconfig b/block/Kconfig
index c23094a14a2b..3bc76bb113a0 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -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
diff --git a/block/Makefile b/block/Makefile
index 205a5f2fef17..f6cef6d4363c 100644
--- a/block/Makefile
+++ b/block/Makefile
@@ -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
diff --git a/block/t10-pi.c b/block/t10-pi.c
index f4907d941f03..d910534b3a41 100644
--- a/block/t10-pi.c
+++ b/block/t10-pi.c
@@ -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");
diff --git a/drivers/nvme/host/Kconfig b/drivers/nvme/host/Kconfig
index c6439638a419..b9358db83e96 100644
--- a/drivers/nvme/host/Kconfig
+++ b/drivers/nvme/host/Kconfig
@@ -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"
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 90cf4691b8c3..a7881f8eb05e 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -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,