From: Eric Biggers <ebiggers@kernel.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
"David S. Miller" <davem@davemloft.net>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux Crypto Mailing List <linux-crypto@vger.kernel.org>
Subject: Re: [GIT PULL] Crypto Update for 6.15
Date: Tue, 25 Mar 2025 20:34:04 -0700 [thread overview]
Message-ID: <20250326033404.GD1661@sol.localdomain> (raw)
In-Reply-To: <Z-NjarWmWSmQ97K0@gondor.apana.org.au>
On Wed, Mar 26, 2025 at 10:16:10AM +0800, Herbert Xu wrote:
> On Wed, Mar 26, 2025 at 09:49:14AM +0800, Herbert Xu wrote:
> >
> > Let's see how your version is so much better:
> >
> > https://lore.kernel.org/all/20250212154718.44255-6-ebiggers@kernel.org/
>
> BTW, I absolutely hate how the fs/block layer uses work queues
> for everything. It's been used as an argument for async being
> unnecessary because you can always wait for completion since
> you're in a work queue.
>
> But this is exactly the wrong way to do asynchronous completion.
> In fact, now that async support has been removed because of
> religious opposition to ahash, we now end up with the worst of
> both worlds where hashing is punted off to a work queue where
> it is simply executed on the CPU:
>
> /**
> * fsverity_enqueue_verify_work() - enqueue work on the fs-verity workqueue
> * @work: the work to enqueue
> *
> * Enqueue verification work for asynchronous processing.
> */
> void fsverity_enqueue_verify_work(struct work_struct *work)
> {
> queue_work(fsverity_read_workqueue, work);
> }
>
> The correct way to do async offload is to do it conditionally:
>
> ret = submit_request(rq);
> if (unlikely(needs_async(ret))) {
> allocate for async path with fallback to sync
> processing in case of OOM
> return;
> }
>
> execute normal synchronous path
>
In the general case, the workqueue is needed anyway because the work can block
(e.g. to read Merkle tree blocks) or can take longer than should be spent in
softirq context. But in many cases the workqueue is indeed overkill and hurts
I/O performance. For that reason, dm-verity and dm-crypt already support doing
the read completion work in softirq context in some cases. It's not enabled by
default though, and isn't implemented in quite the way it should be. Several
people, including me, have been looking into improving that.
So I think your observation about the workqueue being unhelpful is generally
correct, but fixing that is already partially implemented and is being worked on
further. And regardless, this does not have that much relevance to the crypto
API. Yes, you can't sleep from a softirq, which means you can't wait for an
async crypto request to complete (other than polling). So if you want to do
that, you have to go down the workqueue code path. But in practice 99% of users
are just using the CPU-based crypto that is synchronous and does not block.
- Eric
next prev parent reply other threads:[~2025-03-26 3:34 UTC|newest]
Thread overview: 204+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-03 4:40 [GIT PULL] Crypto Update for 5.9 Herbert Xu
2020-08-03 17:55 ` pr-tracker-bot
2020-08-30 22:33 ` [GIT PULL] Crypto Fixes " Herbert Xu
2020-08-30 23:02 ` pr-tracker-bot
2020-09-10 0:34 ` Herbert Xu
2020-09-10 2:48 ` pr-tracker-bot
2020-10-26 1:11 ` [GIT PULL] Crypto Fixes for 5.10 Herbert Xu
2020-10-26 17:52 ` pr-tracker-bot
2020-12-27 11:32 ` [GIT PULL] Crypto Fixes for 5.11 Herbert Xu
2020-12-27 17:27 ` pr-tracker-bot
2021-01-08 3:54 ` Herbert Xu
2021-01-08 20:36 ` pr-tracker-bot
2021-01-18 5:13 ` Herbert Xu
2021-01-18 21:16 ` pr-tracker-bot
2021-01-25 22:36 ` Herbert Xu
2021-01-26 0:01 ` pr-tracker-bot
2021-07-08 3:09 ` [GIT PULL] Crypto Fixes for 5.14 Herbert Xu
2021-07-09 19:20 ` pr-tracker-bot
2021-08-17 1:36 ` Herbert Xu
2021-08-17 2:27 ` pr-tracker-bot
2021-09-29 2:38 ` [GIT PULL] Crypto Fixes for 5.15 Herbert Xu
2021-09-29 14:51 ` pr-tracker-bot
2021-10-29 4:14 ` Herbert Xu
2021-10-29 17:39 ` Linus Torvalds
2021-11-02 4:01 ` Herbert Xu
2021-10-29 18:49 ` pr-tracker-bot
2021-11-12 10:48 ` [GIT PULL] Crypto Fixes for 5.16 Herbert Xu
2021-11-12 20:42 ` pr-tracker-bot
2021-12-22 5:13 ` Herbert Xu
2021-12-22 19:02 ` pr-tracker-bot
2022-02-09 2:33 ` [GIT PULL] Crypto Fixes for 5.17 Herbert Xu
2022-02-09 18:01 ` pr-tracker-bot
2022-03-16 1:13 ` Herbert Xu
2022-03-17 20:40 ` pr-tracker-bot
2022-03-31 3:16 ` [GIT PULL] Crypto Fixes for 5.18 Herbert Xu
2022-03-31 19:12 ` pr-tracker-bot
2022-05-20 5:41 ` Herbert Xu
2022-05-20 6:10 ` pr-tracker-bot
2022-05-27 11:29 ` [GIT PULL] Crypto Fixes for 5.19 Herbert Xu
2022-05-28 1:21 ` pr-tracker-bot
2022-06-17 8:29 ` Herbert Xu
2022-06-17 15:29 ` pr-tracker-bot
2022-06-30 7:56 ` Herbert Xu
2022-06-30 17:28 ` pr-tracker-bot
2022-08-31 8:55 ` [GIT PULL] Crypto Fixes for 6.0 Herbert Xu
2022-08-31 17:20 ` pr-tracker-bot
2022-10-17 4:38 ` [GIT PULL] Crypto Fixes for 6.1 Herbert Xu
2022-10-17 17:51 ` pr-tracker-bot
2022-10-28 4:58 ` Herbert Xu
2022-10-28 17:00 ` Linus Torvalds
2022-11-02 9:49 ` Herbert Xu
2022-10-28 17:02 ` pr-tracker-bot
2023-01-06 9:15 ` [GIT PULL] Crypto Fixes for 6.2 Herbert Xu
2023-01-06 21:19 ` pr-tracker-bot
2023-03-05 10:15 ` [GIT PULL] Crypto Fixes for 6.3 Herbert Xu
2023-03-05 19:37 ` pr-tracker-bot
2023-05-07 13:19 ` [GIT PULL] Crypto Fixes for 6.4 Herbert Xu
2023-05-07 18:12 ` pr-tracker-bot
2023-05-29 3:41 ` Herbert Xu
2023-05-29 11:39 ` pr-tracker-bot
2023-07-09 23:51 ` [GIT PULL] Crypto Fixes for 6.5 Herbert Xu
2023-07-10 17:20 ` pr-tracker-bot
2023-08-21 3:37 ` Herbert Xu
2023-08-21 5:09 ` pr-tracker-bot
2023-08-31 5:16 ` [GIT PULL] Crypto Fixes for 6.6 Herbert Xu
2023-09-01 23:19 ` pr-tracker-bot
2023-09-22 2:10 ` Herbert Xu
2023-09-22 16:43 ` pr-tracker-bot
2023-10-10 8:46 ` Herbert Xu
2023-10-10 18:54 ` pr-tracker-bot
2023-10-21 9:23 ` Herbert Xu
2023-10-21 17:57 ` pr-tracker-bot
2023-11-09 4:30 ` [GIT PULL] Crypto Fixes for 6.7 Herbert Xu
2023-11-10 1:30 ` pr-tracker-bot
2022-08-02 6:05 ` [GIT PULL] Crypto Update for 5.20 Herbert Xu
2022-08-03 0:57 ` pr-tracker-bot
2022-10-04 8:54 ` [GIT PULL] Crypto Update for 6.1 Herbert Xu
2022-10-10 20:56 ` pr-tracker-bot
2022-12-14 8:15 ` [GIT PULL] Crypto Update for 6.2 Herbert Xu
2022-12-14 22:25 ` pr-tracker-bot
2023-02-20 5:22 ` [GIT PULL] Crypto Update for 6.3 Herbert Xu
2023-02-22 2:50 ` pr-tracker-bot
2023-04-24 4:52 ` [GIT PULL] Crypto Update for 6.4 Herbert Xu
2023-04-26 17:06 ` pr-tracker-bot
2023-06-29 5:06 ` [GIT PULL] Crypto Update for 6.5 Herbert Xu
2023-07-01 5:04 ` pr-tracker-bot
2023-08-28 9:22 ` [GIT PULL] Crypto Update for 6.6 Herbert Xu
2023-08-29 19:00 ` pr-tracker-bot
2023-11-02 6:56 ` [GIT PULL] Crypto Update for 6.7 Herbert Xu
2023-11-03 2:34 ` Linus Torvalds
2023-11-03 5:52 ` Herbert Xu
2023-11-03 6:32 ` Linus Torvalds
2023-11-06 10:00 ` [PATCH] crypto: jitterentropy - Hide esoteric Kconfig options under FIPS and EXPERT Herbert Xu
2023-11-06 15:25 ` Stephan Mueller
2023-11-10 9:04 ` Geert Uytterhoeven
2023-11-03 2:37 ` [GIT PULL] Crypto Update for 6.7 pr-tracker-bot
2024-01-09 22:17 ` [GIT PULL] Crypto Update for 6.8 Herbert Xu
2024-01-10 20:38 ` pr-tracker-bot
2024-02-01 5:32 ` [GIT PULL] Crypto Fixes " Herbert Xu
2024-02-01 18:23 ` pr-tracker-bot
2024-02-08 4:29 ` Herbert Xu
2024-02-08 6:24 ` pr-tracker-bot
2024-02-21 9:10 ` Herbert Xu
2024-02-21 17:17 ` pr-tracker-bot
2024-02-28 8:07 ` Herbert Xu
2024-02-28 17:48 ` pr-tracker-bot
2024-03-06 9:47 ` Herbert Xu
2024-03-06 16:33 ` pr-tracker-bot
2024-03-25 9:47 ` [GIT PULL] Crypto Fixes for 6.9 Herbert Xu
2024-03-25 18:18 ` pr-tracker-bot
2024-05-20 3:26 ` [GIT PULL] Crypto Fixes for 6.10 Herbert Xu
2024-05-20 16:33 ` pr-tracker-bot
2024-05-29 4:17 ` Herbert Xu
2024-05-29 17:11 ` pr-tracker-bot
2024-06-28 0:40 ` Herbert Xu
2024-06-28 1:01 ` pr-tracker-bot
2024-09-23 3:08 ` [GIT PULL] Crypto Fixes for 6.12 Herbert Xu
2024-09-24 18:04 ` pr-tracker-bot
2024-10-16 5:37 ` Herbert Xu
2024-10-16 20:51 ` pr-tracker-bot
2024-10-21 5:45 ` Herbert Xu
2024-10-21 18:27 ` pr-tracker-bot
2024-11-15 11:51 ` Herbert Xu
2024-11-15 18:59 ` pr-tracker-bot
2024-12-14 9:21 ` [GIT PULL] Crypto Fixes for 6.13 Herbert Xu
2024-12-14 17:18 ` pr-tracker-bot
2025-03-31 4:50 ` [GIT PULL] Crypto Fixes for 6.15 Herbert Xu
2025-04-05 2:23 ` Herbert Xu
2025-04-05 3:09 ` pr-tracker-bot
2025-04-16 5:16 ` Herbert Xu
2025-04-16 15:24 ` pr-tracker-bot
2025-04-24 9:07 ` Herbert Xu
2025-04-24 16:29 ` pr-tracker-bot
2025-04-30 2:47 ` Herbert Xu
2025-04-30 4:19 ` pr-tracker-bot
2025-05-21 1:59 ` Herbert Xu
2025-05-21 3:15 ` pr-tracker-bot
2024-03-15 3:04 ` [GIT PULL] Crypto Update for 6.9 Herbert Xu
2024-03-15 21:51 ` Linus Torvalds
2024-03-16 4:39 ` Herbert Xu
2024-03-15 21:59 ` pr-tracker-bot
2024-05-13 3:50 ` [GIT PULL] Crypto Update for 6.10 Herbert Xu
2024-05-13 22:12 ` Linus Torvalds
2024-05-14 5:17 ` Herbert Xu
2024-05-14 5:41 ` Linus Torvalds
2024-05-14 6:02 ` Herbert Xu
2024-05-14 6:54 ` Lukas Wunner
2024-05-14 17:07 ` Linus Torvalds
2024-05-13 22:38 ` pr-tracker-bot
2024-07-18 13:49 ` [GIT PULL] Crypto Update for 6.11 Herbert Xu
2024-07-19 18:09 ` pr-tracker-bot
2024-09-16 3:59 ` [GIT PULL] Crypto Update for 6.12 Herbert Xu
2024-09-16 4:55 ` pr-tracker-bot
2024-11-18 3:18 ` [GIT PULL] Crypto Update for 6.13 Herbert Xu
2024-11-19 19:06 ` pr-tracker-bot
2025-01-23 11:10 ` [GIT PULL] Crypto Update for 6.14 Herbert Xu
2025-01-24 16:05 ` pr-tracker-bot
2025-03-25 5:53 ` [GIT PULL] Crypto Update for 6.15 Herbert Xu
2025-03-25 15:25 ` Eric Biggers
2025-03-25 16:59 ` Ard Biesheuvel
2025-03-26 1:49 ` Herbert Xu
2025-03-26 2:16 ` Herbert Xu
2025-03-26 3:34 ` Eric Biggers [this message]
2025-03-26 3:52 ` Herbert Xu
2025-03-30 2:33 ` Chaining is dead Herbert Xu
2025-03-31 16:56 ` Eric Biggers
2025-04-01 2:44 ` Herbert Xu
2025-04-01 3:33 ` Eric Biggers
2025-04-01 3:55 ` Herbert Xu
2025-04-01 4:08 ` Eric Biggers
2025-04-01 4:14 ` Herbert Xu
2025-04-01 7:20 ` Milan Broz
2025-04-01 3:30 ` Herbert Xu
2025-04-01 3:39 ` Eric Biggers
2025-04-04 8:46 ` Christoph Hellwig
2025-03-26 3:20 ` [GIT PULL] Crypto Update for 6.15 Eric Biggers
2025-03-26 3:30 ` Herbert Xu
2025-03-29 17:40 ` Linus Torvalds
2025-03-29 18:06 ` Eric Biggers
2025-03-29 18:17 ` Linus Torvalds
2025-03-29 18:19 ` Linus Torvalds
2025-03-29 18:38 ` Eric Biggers
2025-03-29 18:52 ` Linus Torvalds
2025-03-29 18:24 ` pr-tracker-bot
2020-10-12 3:32 ` [GIT PULL] Crypto Update for 5.10 Herbert Xu
2020-10-13 16:24 ` pr-tracker-bot
2020-12-14 5:55 ` [GIT PULL] Crypto Update for 5.11 Herbert Xu
2020-12-14 20:56 ` pr-tracker-bot
2021-02-15 2:47 ` [GIT PULL] Crypto Update for 5.12 Herbert Xu
2021-02-22 1:28 ` pr-tracker-bot
2021-04-26 12:32 ` [GIT PULL] Crypto Update for 5.13 Herbert Xu
2021-04-26 15:59 ` pr-tracker-bot
2021-06-28 11:00 ` [GIT PULL] Crypto Update for 5.14 Herbert Xu
2021-06-28 23:36 ` pr-tracker-bot
2021-08-30 8:28 ` [GIT PULL] Crypto Update for 5.15 Herbert Xu
2021-08-30 20:17 ` pr-tracker-bot
2021-11-02 3:52 ` [GIT PULL] Crypto Update for 5.16 Herbert Xu
2021-11-02 4:27 ` pr-tracker-bot
2022-01-11 2:04 ` [GIT PULL] Crypto Update for 5.17 Herbert Xu
2022-01-11 20:53 ` pr-tracker-bot
2022-03-20 23:42 ` [GIT PULL] Crypto Update for 5.18 Herbert Xu
2022-03-21 23:14 ` Linus Torvalds
2022-03-22 5:49 ` Herbert Xu
2022-03-21 23:18 ` pr-tracker-bot
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=20250326033404.GD1661@sol.localdomain \
--to=ebiggers@kernel.org \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox