* pass a struct block_device to the blk-crypto interfaces v3
@ 2022-11-14 4:29 Christoph Hellwig
2022-11-14 4:29 ` [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces Christoph Hellwig
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Christoph Hellwig @ 2022-11-14 4:29 UTC (permalink / raw)
To: Jens Axboe
Cc: Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim, Eric Biggers,
dm-devel, linux-block, linux-fscrypt
Hi all,
this series switches the blk-crypto interfaces to take block_device
arguments instead of request_queues, and with that finishes off the
project to hide struct request_queue from file systems.
Changes since v2:
- update a few comments
- fix a whitespace error
- remove now unused forward declarations
- fix spelling errors an not precise enough wording in commit messages
- move a few more declarations around inside or between headers
Changes since v1:
- keep using request_queue in the Documentation for driver interfaces
- rename to blk_crypto_cfg_supported to
blk_crypto_config_supported_natively and move it to blk-crypto.[ch]
- mark __blk_crypto_cfg_supported private
Diffstat:
Documentation/block/inline-encryption.rst | 12 ++++-----
block/blk-crypto-internal.h | 12 +++++++++
block/blk-crypto.c | 37 +++++++++++++++++-------------
drivers/md/dm-table.c | 2 -
fs/crypto/inline_crypt.c | 14 ++++-------
include/linux/blk-crypto-profile.h | 12 ---------
include/linux/blk-crypto.h | 13 ++++------
7 files changed, 52 insertions(+), 50 deletions(-)
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces
2022-11-14 4:29 pass a struct block_device to the blk-crypto interfaces v3 Christoph Hellwig
@ 2022-11-14 4:29 ` Christoph Hellwig
2022-11-16 3:10 ` Eric Biggers
2022-11-14 4:29 ` [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper Christoph Hellwig
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2022-11-14 4:29 UTC (permalink / raw)
To: Jens Axboe
Cc: Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim, Eric Biggers,
dm-devel, linux-block, linux-fscrypt
Switch all public blk-crypto interfaces to use struct block_device
arguments to specify the device they operate on instead of th
request_queue, which is a block layer implementation detail.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
Documentation/block/inline-encryption.rst | 12 ++++++------
block/blk-crypto.c | 24 +++++++++++++----------
drivers/md/dm-table.c | 2 +-
fs/crypto/inline_crypt.c | 8 +++-----
include/linux/blk-crypto.h | 11 ++++-------
5 files changed, 28 insertions(+), 29 deletions(-)
diff --git a/Documentation/block/inline-encryption.rst b/Documentation/block/inline-encryption.rst
index 4d151fbe20583..f9bf18ea65093 100644
--- a/Documentation/block/inline-encryption.rst
+++ b/Documentation/block/inline-encryption.rst
@@ -142,7 +142,7 @@ Therefore, we also introduce *blk-crypto-fallback*, which is an implementation
of inline encryption using the kernel crypto API. blk-crypto-fallback is built
into the block layer, so it works on any block device without any special setup.
Essentially, when a bio with an encryption context is submitted to a
-request_queue that doesn't support that encryption context, the block layer will
+block_device that doesn't support that encryption context, the block layer will
handle en/decryption of the bio using blk-crypto-fallback.
For encryption, the data cannot be encrypted in-place, as callers usually rely
@@ -187,7 +187,7 @@ API presented to users of the block layer
``blk_crypto_config_supported()`` allows users to check ahead of time whether
inline encryption with particular crypto settings will work on a particular
-request_queue -- either via hardware or via blk-crypto-fallback. This function
+block_device -- either via hardware or via blk-crypto-fallback. This function
takes in a ``struct blk_crypto_config`` which is like blk_crypto_key, but omits
the actual bytes of the key and instead just contains the algorithm, data unit
size, etc. This function can be useful if blk-crypto-fallback is disabled.
@@ -195,7 +195,7 @@ size, etc. This function can be useful if blk-crypto-fallback is disabled.
``blk_crypto_init_key()`` allows users to initialize a blk_crypto_key.
Users must call ``blk_crypto_start_using_key()`` before actually starting to use
-a blk_crypto_key on a request_queue (even if ``blk_crypto_config_supported()``
+a blk_crypto_key on a block_device (even if ``blk_crypto_config_supported()``
was called earlier). This is needed to initialize blk-crypto-fallback if it
will be needed. This must not be called from the data path, as this may have to
allocate resources, which may deadlock in that case.
@@ -207,7 +207,7 @@ for en/decryption. Users don't need to worry about freeing the bio_crypt_ctx
later, as that happens automatically when the bio is freed or reset.
Finally, when done using inline encryption with a blk_crypto_key on a
-request_queue, users must call ``blk_crypto_evict_key()``. This ensures that
+block_device, users must call ``blk_crypto_evict_key()``. This ensures that
the key is evicted from all keyslots it may be programmed into and unlinked from
any kernel data structures it may be linked into.
@@ -221,9 +221,9 @@ as follows:
5. ``blk_crypto_evict_key()`` (after all I/O has completed)
6. Zeroize the blk_crypto_key (this has no dedicated function)
-If a blk_crypto_key is being used on multiple request_queues, then
+If a blk_crypto_key is being used on multiple block_devices, then
``blk_crypto_config_supported()`` (if used), ``blk_crypto_start_using_key()``,
-and ``blk_crypto_evict_key()`` must be called on each request_queue.
+and ``blk_crypto_evict_key()`` must be called on each block_device.
API presented to device drivers
===============================
diff --git a/block/blk-crypto.c b/block/blk-crypto.c
index a496aaef85ba4..0047436b63371 100644
--- a/block/blk-crypto.c
+++ b/block/blk-crypto.c
@@ -354,20 +354,21 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
/*
* Check if bios with @cfg can be en/decrypted by blk-crypto (i.e. either the
- * request queue it's submitted to supports inline crypto, or the
+ * block_device it's submitted to supports inline crypto, or the
* blk-crypto-fallback is enabled and supports the cfg).
*/
-bool blk_crypto_config_supported(struct request_queue *q,
+bool blk_crypto_config_supported(struct block_device *bdev,
const struct blk_crypto_config *cfg)
{
return IS_ENABLED(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) ||
- __blk_crypto_cfg_supported(q->crypto_profile, cfg);
+ __blk_crypto_cfg_supported(bdev_get_queue(bdev)->crypto_profile,
+ cfg);
}
/**
* blk_crypto_start_using_key() - Start using a blk_crypto_key on a device
+ * @bdev: block device to operate on
* @key: A key to use on the device
- * @q: the request queue for the device
*
* Upper layers must call this function to ensure that either the hardware
* supports the key's crypto settings, or the crypto API fallback has transforms
@@ -379,10 +380,11 @@ bool blk_crypto_config_supported(struct request_queue *q,
* blk-crypto-fallback is either disabled or the needed algorithm
* is disabled in the crypto API; or another -errno code.
*/
-int blk_crypto_start_using_key(const struct blk_crypto_key *key,
- struct request_queue *q)
+int blk_crypto_start_using_key(struct block_device *bdev,
+ const struct blk_crypto_key *key)
{
- if (__blk_crypto_cfg_supported(q->crypto_profile, &key->crypto_cfg))
+ if (__blk_crypto_cfg_supported(bdev_get_queue(bdev)->crypto_profile,
+ &key->crypto_cfg))
return 0;
return blk_crypto_fallback_start_using_mode(key->crypto_cfg.crypto_mode);
}
@@ -390,7 +392,7 @@ int blk_crypto_start_using_key(const struct blk_crypto_key *key,
/**
* blk_crypto_evict_key() - Evict a key from any inline encryption hardware
* it may have been programmed into
- * @q: The request queue who's associated inline encryption hardware this key
+ * @bdev: The block_device who's associated inline encryption hardware this key
* might have been programmed into
* @key: The key to evict
*
@@ -400,14 +402,16 @@ int blk_crypto_start_using_key(const struct blk_crypto_key *key,
*
* Return: 0 on success or if the key wasn't in any keyslot; -errno on error.
*/
-int blk_crypto_evict_key(struct request_queue *q,
+int blk_crypto_evict_key(struct block_device *bdev,
const struct blk_crypto_key *key)
{
+ struct request_queue *q = bdev_get_queue(bdev);
+
if (__blk_crypto_cfg_supported(q->crypto_profile, &key->crypto_cfg))
return __blk_crypto_evict_key(q->crypto_profile, key);
/*
- * If the request_queue didn't support the key, then blk-crypto-fallback
+ * If the block_device didn't support the key, then blk-crypto-fallback
* may have been used, so try to evict the key from blk-crypto-fallback.
*/
return blk_crypto_fallback_evict_key(key);
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 078da18bb86d8..8541d5688f3a6 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -1215,7 +1215,7 @@ static int dm_keyslot_evict_callback(struct dm_target *ti, struct dm_dev *dev,
struct dm_keyslot_evict_args *args = data;
int err;
- err = blk_crypto_evict_key(bdev_get_queue(dev->bdev), args->key);
+ err = blk_crypto_evict_key(dev->bdev, args->key);
if (!args->err)
args->err = err;
/* Always try to evict the key from all devices. */
diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c
index cea8b14007e6a..55c4d8c23d30d 100644
--- a/fs/crypto/inline_crypt.c
+++ b/fs/crypto/inline_crypt.c
@@ -139,8 +139,7 @@ int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
return PTR_ERR(devs);
for (i = 0; i < num_devs; i++) {
- if (!blk_crypto_config_supported(bdev_get_queue(devs[i]),
- &crypto_cfg))
+ if (!blk_crypto_config_supported(devs[i], &crypto_cfg))
goto out_free_devs;
}
@@ -184,8 +183,7 @@ int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
goto fail;
}
for (i = 0; i < num_devs; i++) {
- err = blk_crypto_start_using_key(blk_key,
- bdev_get_queue(devs[i]));
+ err = blk_crypto_start_using_key(devs[i], blk_key);
if (err)
break;
}
@@ -224,7 +222,7 @@ void fscrypt_destroy_inline_crypt_key(struct super_block *sb,
devs = fscrypt_get_devices(sb, &num_devs);
if (!IS_ERR(devs)) {
for (i = 0; i < num_devs; i++)
- blk_crypto_evict_key(bdev_get_queue(devs[i]), blk_key);
+ blk_crypto_evict_key(devs[i], blk_key);
kfree(devs);
}
kfree_sensitive(blk_key);
diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
index 69b24fe92cbf1..561ca92e204d5 100644
--- a/include/linux/blk-crypto.h
+++ b/include/linux/blk-crypto.h
@@ -71,9 +71,6 @@ struct bio_crypt_ctx {
#include <linux/blk_types.h>
#include <linux/blkdev.h>
-struct request;
-struct request_queue;
-
#ifdef CONFIG_BLK_INLINE_ENCRYPTION
static inline bool bio_has_crypt_ctx(struct bio *bio)
@@ -94,13 +91,13 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
unsigned int dun_bytes,
unsigned int data_unit_size);
-int blk_crypto_start_using_key(const struct blk_crypto_key *key,
- struct request_queue *q);
+int blk_crypto_start_using_key(struct block_device *bdev,
+ const struct blk_crypto_key *key);
-int blk_crypto_evict_key(struct request_queue *q,
+int blk_crypto_evict_key(struct block_device *bdev,
const struct blk_crypto_key *key);
-bool blk_crypto_config_supported(struct request_queue *q,
+bool blk_crypto_config_supported(struct block_device *bdev,
const struct blk_crypto_config *cfg);
#else /* CONFIG_BLK_INLINE_ENCRYPTION */
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper
2022-11-14 4:29 pass a struct block_device to the blk-crypto interfaces v3 Christoph Hellwig
2022-11-14 4:29 ` [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces Christoph Hellwig
@ 2022-11-14 4:29 ` Christoph Hellwig
2022-11-16 3:12 ` Eric Biggers
2022-11-14 4:29 ` [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h Christoph Hellwig
2022-11-21 18:39 ` pass a struct block_device to the blk-crypto interfaces v3 Jens Axboe
3 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2022-11-14 4:29 UTC (permalink / raw)
To: Jens Axboe
Cc: Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim, Eric Biggers,
dm-devel, linux-block, linux-fscrypt
Add a blk_crypto_config_supported_natively helper that wraps
__blk_crypto_cfg_supported to retrieve the crypto_profile from the
request queue. With this fscrypt can stop including
blk-crypto-profile.h and rely on the public consumer interface in
blk-crypto.h.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
block/blk-crypto.c | 21 ++++++++++++---------
fs/crypto/inline_crypt.c | 6 ++----
include/linux/blk-crypto.h | 2 ++
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/block/blk-crypto.c b/block/blk-crypto.c
index 0047436b63371..6a461f4d676a3 100644
--- a/block/blk-crypto.c
+++ b/block/blk-crypto.c
@@ -267,7 +267,6 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
{
struct bio *bio = *bio_ptr;
const struct blk_crypto_key *bc_key = bio->bi_crypt_context->bc_key;
- struct blk_crypto_profile *profile;
/* Error if bio has no data. */
if (WARN_ON_ONCE(!bio_has_data(bio))) {
@@ -284,10 +283,9 @@ bool __blk_crypto_bio_prep(struct bio **bio_ptr)
* Success if device supports the encryption context, or if we succeeded
* in falling back to the crypto API.
*/
- profile = bdev_get_queue(bio->bi_bdev)->crypto_profile;
- if (__blk_crypto_cfg_supported(profile, &bc_key->crypto_cfg))
+ if (blk_crypto_config_supported_natively(bio->bi_bdev,
+ &bc_key->crypto_cfg))
return true;
-
if (blk_crypto_fallback_bio_prep(bio_ptr))
return true;
fail:
@@ -352,6 +350,13 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
return 0;
}
+bool blk_crypto_config_supported_natively(struct block_device *bdev,
+ const struct blk_crypto_config *cfg)
+{
+ return __blk_crypto_cfg_supported(bdev_get_queue(bdev)->crypto_profile,
+ cfg);
+}
+
/*
* Check if bios with @cfg can be en/decrypted by blk-crypto (i.e. either the
* block_device it's submitted to supports inline crypto, or the
@@ -361,8 +366,7 @@ bool blk_crypto_config_supported(struct block_device *bdev,
const struct blk_crypto_config *cfg)
{
return IS_ENABLED(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) ||
- __blk_crypto_cfg_supported(bdev_get_queue(bdev)->crypto_profile,
- cfg);
+ blk_crypto_config_supported_natively(bdev, cfg);
}
/**
@@ -383,8 +387,7 @@ bool blk_crypto_config_supported(struct block_device *bdev,
int blk_crypto_start_using_key(struct block_device *bdev,
const struct blk_crypto_key *key)
{
- if (__blk_crypto_cfg_supported(bdev_get_queue(bdev)->crypto_profile,
- &key->crypto_cfg))
+ if (blk_crypto_config_supported_natively(bdev, &key->crypto_cfg))
return 0;
return blk_crypto_fallback_start_using_mode(key->crypto_cfg.crypto_mode);
}
@@ -407,7 +410,7 @@ int blk_crypto_evict_key(struct block_device *bdev,
{
struct request_queue *q = bdev_get_queue(bdev);
- if (__blk_crypto_cfg_supported(q->crypto_profile, &key->crypto_cfg))
+ if (blk_crypto_config_supported_natively(bdev, &key->crypto_cfg))
return __blk_crypto_evict_key(q->crypto_profile, key);
/*
diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c
index 55c4d8c23d30d..8bfb3ce864766 100644
--- a/fs/crypto/inline_crypt.c
+++ b/fs/crypto/inline_crypt.c
@@ -12,7 +12,7 @@
* provides the key and IV to use.
*/
-#include <linux/blk-crypto-profile.h>
+#include <linux/blk-crypto.h>
#include <linux/blkdev.h>
#include <linux/buffer_head.h>
#include <linux/sched/mm.h>
@@ -77,10 +77,8 @@ static void fscrypt_log_blk_crypto_impl(struct fscrypt_mode *mode,
unsigned int i;
for (i = 0; i < num_devs; i++) {
- struct request_queue *q = bdev_get_queue(devs[i]);
-
if (!IS_ENABLED(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) ||
- __blk_crypto_cfg_supported(q->crypto_profile, cfg)) {
+ blk_crypto_config_supported_natively(devs[i], cfg)) {
if (!xchg(&mode->logged_blk_crypto_native, 1))
pr_info("fscrypt: %s using blk-crypto (native)\n",
mode->friendly_name);
diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
index 561ca92e204d5..a33d32f5c2684 100644
--- a/include/linux/blk-crypto.h
+++ b/include/linux/blk-crypto.h
@@ -97,6 +97,8 @@ int blk_crypto_start_using_key(struct block_device *bdev,
int blk_crypto_evict_key(struct block_device *bdev,
const struct blk_crypto_key *key);
+bool blk_crypto_config_supported_natively(struct block_device *bdev,
+ const struct blk_crypto_config *cfg);
bool blk_crypto_config_supported(struct block_device *bdev,
const struct blk_crypto_config *cfg);
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h
2022-11-14 4:29 pass a struct block_device to the blk-crypto interfaces v3 Christoph Hellwig
2022-11-14 4:29 ` [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces Christoph Hellwig
2022-11-14 4:29 ` [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper Christoph Hellwig
@ 2022-11-14 4:29 ` Christoph Hellwig
2022-11-15 9:06 ` [dm-devel] " Christoph Hellwig
2022-11-16 3:18 ` Eric Biggers
2022-11-21 18:39 ` pass a struct block_device to the blk-crypto interfaces v3 Jens Axboe
3 siblings, 2 replies; 9+ messages in thread
From: Christoph Hellwig @ 2022-11-14 4:29 UTC (permalink / raw)
To: Jens Axboe
Cc: Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim, Eric Biggers,
dm-devel, linux-block, linux-fscrypt
blk_crypto_get_keyslot, blk_crypto_put_keyslot, __blk_crypto_evict_key
and __blk_crypto_cfg_supported are only used internally by the
blk-crypto code, so move the out of blk-crypto-profile.h, which is
included by drivers that supply blk-crypto functionality.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
block/blk-crypto-internal.h | 12 ++++++++++++
include/linux/blk-crypto-profile.h | 12 ------------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/block/blk-crypto-internal.h b/block/blk-crypto-internal.h
index e6818ffaddbf8..d31fa80454e49 100644
--- a/block/blk-crypto-internal.h
+++ b/block/blk-crypto-internal.h
@@ -65,6 +65,18 @@ static inline bool blk_crypto_rq_is_encrypted(struct request *rq)
return rq->crypt_ctx;
}
+blk_status_t blk_crypto_get_keyslot(struct blk_crypto_profile *profile,
+ const struct blk_crypto_key *key,
+ struct blk_crypto_keyslot **slot_ptr);
+
+void blk_crypto_put_keyslot(struct blk_crypto_keyslot *slot);
+
+int __blk_crypto_evict_key(struct blk_crypto_profile *profile,
+ const struct blk_crypto_key *key);
+
+bool __blk_crypto_cfg_supported(struct blk_crypto_profile *profile,
+ const struct blk_crypto_config *cfg);
+
#else /* CONFIG_BLK_INLINE_ENCRYPTION */
static inline int blk_crypto_sysfs_register(struct request_queue *q)
diff --git a/include/linux/blk-crypto-profile.h b/include/linux/blk-crypto-profile.h
index bbab65bd54288..e6802b69cdd64 100644
--- a/include/linux/blk-crypto-profile.h
+++ b/include/linux/blk-crypto-profile.h
@@ -138,18 +138,6 @@ int devm_blk_crypto_profile_init(struct device *dev,
unsigned int blk_crypto_keyslot_index(struct blk_crypto_keyslot *slot);
-blk_status_t blk_crypto_get_keyslot(struct blk_crypto_profile *profile,
- const struct blk_crypto_key *key,
- struct blk_crypto_keyslot **slot_ptr);
-
-void blk_crypto_put_keyslot(struct blk_crypto_keyslot *slot);
-
-bool __blk_crypto_cfg_supported(struct blk_crypto_profile *profile,
- const struct blk_crypto_config *cfg);
-
-int __blk_crypto_evict_key(struct blk_crypto_profile *profile,
- const struct blk_crypto_key *key);
-
void blk_crypto_reprogram_all_keys(struct blk_crypto_profile *profile);
void blk_crypto_profile_destroy(struct blk_crypto_profile *profile);
--
2.30.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [dm-devel] [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h
2022-11-14 4:29 ` [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h Christoph Hellwig
@ 2022-11-15 9:06 ` Christoph Hellwig
2022-11-16 3:18 ` Eric Biggers
1 sibling, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2022-11-15 9:06 UTC (permalink / raw)
To: Jens Axboe
Cc: linux-block, Theodore Y. Ts'o, Mike Snitzer, linux-fscrypt,
Eric Biggers, dm-devel, Jaegeuk Kim
On Mon, Nov 14, 2022 at 05:29:44AM +0100, Christoph Hellwig wrote:
> blk_crypto_get_keyslot, blk_crypto_put_keyslot, __blk_crypto_evict_key
> and __blk_crypto_cfg_supported are only used internally by the
> blk-crypto code, so move the out of blk-crypto-profile.h, which is
> included by drivers that supply blk-crypto functionality.
The buildbot complained that blk-crypto-profile.c now needs a
blk-crypto-internal.h include, which can be done by folding this in:
diff --git a/block/blk-crypto-profile.c b/block/blk-crypto-profile.c
index 96c511967386d..0307fb0d95d34 100644
--- a/block/blk-crypto-profile.c
+++ b/block/blk-crypto-profile.c
@@ -32,6 +32,7 @@
#include <linux/wait.h>
#include <linux/blkdev.h>
#include <linux/blk-integrity.h>
+#include "blk-crypto-internal.h"
struct blk_crypto_keyslot {
atomic_t slot_refs;
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces
2022-11-14 4:29 ` [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces Christoph Hellwig
@ 2022-11-16 3:10 ` Eric Biggers
0 siblings, 0 replies; 9+ messages in thread
From: Eric Biggers @ 2022-11-16 3:10 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim,
dm-devel, linux-block, linux-fscrypt
On Mon, Nov 14, 2022 at 05:29:42AM +0100, Christoph Hellwig wrote:
> Switch all public blk-crypto interfaces to use struct block_device
> arguments to specify the device they operate on instead of th
> request_queue, which is a block layer implementation detail.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Biggers <ebiggers@google.com>
- Eric
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper
2022-11-14 4:29 ` [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper Christoph Hellwig
@ 2022-11-16 3:12 ` Eric Biggers
0 siblings, 0 replies; 9+ messages in thread
From: Eric Biggers @ 2022-11-16 3:12 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim,
dm-devel, linux-block, linux-fscrypt
On Mon, Nov 14, 2022 at 05:29:43AM +0100, Christoph Hellwig wrote:
> Add a blk_crypto_config_supported_natively helper that wraps
> __blk_crypto_cfg_supported to retrieve the crypto_profile from the
> request queue. With this fscrypt can stop including
> blk-crypto-profile.h and rely on the public consumer interface in
> blk-crypto.h.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Biggers <ebiggers@google.com>
- Eric
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h
2022-11-14 4:29 ` [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h Christoph Hellwig
2022-11-15 9:06 ` [dm-devel] " Christoph Hellwig
@ 2022-11-16 3:18 ` Eric Biggers
1 sibling, 0 replies; 9+ messages in thread
From: Eric Biggers @ 2022-11-16 3:18 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Mike Snitzer, Theodore Y. Ts'o, Jaegeuk Kim,
dm-devel, linux-block, linux-fscrypt
On Mon, Nov 14, 2022 at 05:29:44AM +0100, Christoph Hellwig wrote:
> blk_crypto_get_keyslot, blk_crypto_put_keyslot, __blk_crypto_evict_key
> and __blk_crypto_cfg_supported are only used internally by the
> blk-crypto code, so move the out of blk-crypto-profile.h, which is
> included by drivers that supply blk-crypto functionality.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> block/blk-crypto-internal.h | 12 ++++++++++++
> include/linux/blk-crypto-profile.h | 12 ------------
> 2 files changed, 12 insertions(+), 12 deletions(-)
With the include of blk-crypto-internal.h in blk-crypto-profile.c added, feel
free to add:
Reviewed-by: Eric Biggers <ebiggers@google.com>
- Eric
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: pass a struct block_device to the blk-crypto interfaces v3
2022-11-14 4:29 pass a struct block_device to the blk-crypto interfaces v3 Christoph Hellwig
` (2 preceding siblings ...)
2022-11-14 4:29 ` [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h Christoph Hellwig
@ 2022-11-21 18:39 ` Jens Axboe
3 siblings, 0 replies; 9+ messages in thread
From: Jens Axboe @ 2022-11-21 18:39 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Eric Biggers, Jaegeuk Kim, linux-fscrypt, Mike Snitzer, dm-devel,
linux-block, Theodore Y. Ts'o
On Mon, 14 Nov 2022 05:29:41 +0100, Christoph Hellwig wrote:
> this series switches the blk-crypto interfaces to take block_device
> arguments instead of request_queues, and with that finishes off the
> project to hide struct request_queue from file systems.
>
> Changes since v2:
> - update a few comments
> - fix a whitespace error
> - remove now unused forward declarations
> - fix spelling errors an not precise enough wording in commit messages
> - move a few more declarations around inside or between headers
>
> [...]
Applied, thanks!
[1/3] blk-crypto: don't use struct request_queue for public interfaces
commit: fce3caea0f241f5d34855c82c399d5e0e2d91f07
[2/3] blk-crypto: add a blk_crypto_config_supported_natively helper
commit: 6715c98b6cf003f26b1b2f655393134e9d999a05
[3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h
commit: 3569788c08235c6f3e9e6ca724b2df44787ff487
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-11-21 18:39 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-14 4:29 pass a struct block_device to the blk-crypto interfaces v3 Christoph Hellwig
2022-11-14 4:29 ` [PATCH 1/3] blk-crypto: don't use struct request_queue for public interfaces Christoph Hellwig
2022-11-16 3:10 ` Eric Biggers
2022-11-14 4:29 ` [PATCH 2/3] blk-crypto: add a blk_crypto_config_supported_natively helper Christoph Hellwig
2022-11-16 3:12 ` Eric Biggers
2022-11-14 4:29 ` [PATCH 3/3] blk-crypto: move internal only declarations to blk-crypto-internal.h Christoph Hellwig
2022-11-15 9:06 ` [dm-devel] " Christoph Hellwig
2022-11-16 3:18 ` Eric Biggers
2022-11-21 18:39 ` pass a struct block_device to the blk-crypto interfaces v3 Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).