All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Snitzer <snitzer@kernel.org>
To: hch@lst.de
Cc: axboe@kernel.dk, dm-devel@lists.linux.dev,
	linux-block@vger.kernel.org, mpatocka@redhat.com,
	Abelardo Ricart III <aricart@memnix.com>,
	Brandon Smith <freedom@reardencode.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Ming Lei <ming.lei@redhat.com>, Mike Snitzer <snitzer@kernel.org>
Subject: [PATCH for-6.10 1/2] dm-crypt: stop constraining max_segment_size to PAGE_SIZE
Date: Thu, 11 Apr 2024 16:15:28 -0400	[thread overview]
Message-ID: <20240411201529.44846-2-snitzer@kernel.org> (raw)
In-Reply-To: <ZfDeMn6V8WzRUws3@infradead.org>

This change effectively reverts commit 586b286b110e ("dm crypt:
constrain crypt device's max_segment_size to PAGE_SIZE") and relies on
block core's late bio-splitting to ensure that dm-crypt's encryption
bios are split accordingly if they exceed the underlying device's
limits (e.g. max_segment_size).

Commit 586b286b110e was applied as a 4.3 fix for the benefit of
stable@ kernels 4.0+ just after block core's late bio-splitting was
introduced in 4.3 with commit 54efd50bfd873 ("block: make
generic_make_request handle arbitrarily sized bios"). Given block
core's late bio-splitting it is past time that dm-crypt make use of
it.

Also, given the recent need to revert meaningful progress that was
attempted during the 6.9 merge window (see commit bff4b74625fe Revert
"dm: use queue_limits_set") this change allows DM core to safely make
use of queue_limits_set() without risk of breaking dm-crypt on NVMe.
Though it should be noted this commit isn't a prereq for reinstating
DM core's use of queue_limits_set() because blk_validate_limits() was
made less strict with commit b561ea56a264 ("block: allow device to
have both virt_boundary_mask and max segment size").

Signed-off-by: Mike Snitzer <snitzer@kernel.org>
---
 drivers/md/dm-crypt.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 5bfa35760167..f43a2c0b3d77 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -1656,8 +1656,8 @@ static void crypt_free_buffer_pages(struct crypt_config *cc, struct bio *clone);
 
 /*
  * Generate a new unfragmented bio with the given size
- * This should never violate the device limitations (but only because
- * max_segment_size is being constrained to PAGE_SIZE).
+ * This should never violate the device limitations (but if it did then block
+ * core should split the bio as needed).
  *
  * This function may be called concurrently. If we allocate from the mempool
  * concurrently, there is a possibility of deadlock. For example, if we have
@@ -3717,14 +3717,6 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
 {
 	struct crypt_config *cc = ti->private;
 
-	/*
-	 * Unfortunate constraint that is required to avoid the potential
-	 * for exceeding underlying device's max_segments limits -- due to
-	 * crypt_alloc_buffer() possibly allocating pages for the encryption
-	 * bio that are not as physically contiguous as the original bio.
-	 */
-	limits->max_segment_size = PAGE_SIZE;
-
 	limits->logical_block_size =
 		max_t(unsigned int, limits->logical_block_size, cc->sector_size);
 	limits->physical_block_size =
-- 
2.40.0


  parent reply	other threads:[~2024-04-11 20:15 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-10 20:30 [GIT PULL] Block updates for 6.9-rc1 Jens Axboe
2024-03-11 19:43 ` pr-tracker-bot
2024-03-11 23:50 ` Johannes Weiner
2024-03-11 23:53   ` Jens Axboe
2024-03-11 23:58   ` Linus Torvalds
2024-03-12  0:02     ` Jens Axboe
2024-03-12  0:21       ` Linus Torvalds
2024-03-12  0:28         ` Mike Snitzer
2024-03-12  1:03           ` Jens Axboe
2024-03-12  1:09           ` Christoph Hellwig
2024-03-12  1:17             ` Jens Axboe
2024-03-12  1:20               ` Linus Torvalds
2024-03-12  1:23                 ` Jens Axboe
2024-03-12  1:28                   ` Linus Torvalds
2024-03-12  1:37                     ` Jens Axboe
2024-03-12 16:39                       ` Keith Busch
2024-03-12 11:53                   ` Christoph Hellwig
2024-03-12 15:25                     ` Jens Axboe
2024-03-12 11:52                 ` Christoph Hellwig
2024-03-12 15:22             ` Mike Snitzer
2024-03-12 16:28               ` Keith Busch
2024-03-12 21:10               ` Christoph Hellwig
2024-03-12 22:22                 ` Mike Snitzer
2024-03-12 22:30                   ` Christoph Hellwig
2024-03-12 22:50                     ` Mike Snitzer
2024-03-12 22:58                       ` Christoph Hellwig
2024-04-11 20:15                         ` [PATCH for-6.10 0/2] dm: use late bio-splitting and queue_limits_set Mike Snitzer
2024-04-11 20:15                         ` Mike Snitzer [this message]
2024-04-12  6:11                           ` [PATCH for-6.10 1/2] dm-crypt: stop constraining max_segment_size to PAGE_SIZE Christoph Hellwig
2024-04-15 14:08                           ` Mikulas Patocka
2024-04-23  7:32                           ` Ming Lei
2024-04-11 20:15                         ` [PATCH for-6.10 2/2] dm: use queue_limits_set Mike Snitzer
2024-04-23  7:33                           ` Ming Lei
2024-03-13 13:11                 ` [GIT PULL] Block updates for 6.9-rc1 Ming Lei
2024-03-12  1:01         ` Jens Axboe
2024-03-12  0:25       ` Mike Snitzer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240411201529.44846-2-snitzer@kernel.org \
    --to=snitzer@kernel.org \
    --cc=aricart@memnix.com \
    --cc=axboe@kernel.dk \
    --cc=dm-devel@lists.linux.dev \
    --cc=freedom@reardencode.com \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=mpatocka@redhat.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.