From: Mikulas Patocka <mpatocka@redhat.com>
To: Ignat Korchagin <ignat@cloudflare.com>
Cc: agk@redhat.com, snitzer@redhat.com, dm-devel@redhat.com,
dm-crypt@saout.de, linux-kernel@vger.kernel.org,
ebiggers@kernel.org, Damien.LeMoal@wdc.com,
herbert@gondor.apana.org.au, kernel-team@cloudflare.com,
nobuto.murata@canonical.com, clm@fb.com, josef@toxicpanda.com,
dsterba@suse.com, linux-btrfs@vger.kernel.org,
mail@maciej.szmigiero.name, stable@vger.kernel.org
Subject: Re: [PATCH v2 1/2] dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq
Date: Fri, 1 Jan 2021 05:00:18 -0500 (EST) [thread overview]
Message-ID: <alpine.LRH.2.02.2101010450460.31009@file01.intranet.prod.int.rdu2.redhat.com> (raw)
In-Reply-To: <20201230214520.154793-2-ignat@cloudflare.com>
On Wed, 30 Dec 2020, Ignat Korchagin wrote:
> diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
> index 53791138d78b..e4fd690c70e1 100644
> --- a/drivers/md/dm-crypt.c
> +++ b/drivers/md/dm-crypt.c
> @@ -1539,7 +1549,10 @@ static blk_status_t crypt_convert(struct crypt_config *cc,
>
> while (ctx->iter_in.bi_size && ctx->iter_out.bi_size) {
>
> - crypt_alloc_req(cc, ctx);
> + r = crypt_alloc_req(cc, ctx);
> + if (r)
> + return BLK_STS_RESOURCE;
> +
> atomic_inc(&ctx->cc_pending);
>
> if (crypt_integrity_aead(cc))
> --
> 2.20.1
I'm not quite convinced that returning BLK_STS_RESOURCE will help. The
block layer will convert this value back to -ENOMEM and return it to the
caller, resulting in an I/O error.
Note that GFP_ATOMIC allocations may fail anytime and you must handle
allocation failure gracefully - i.e. process the request without any
error.
An acceptable solution would be to punt the request to a workqueue and do
GFP_NOIO allocation from the workqueue. Or add the request to some list
and process the list when some other request completes.
You should write a test that simulates allocation failure and verify that
the kernel handles it gracefully without any I/O error.
Mikulas
WARNING: multiple messages have this Message-ID (diff)
From: Mikulas Patocka <mpatocka@redhat.com>
To: Ignat Korchagin <ignat@cloudflare.com>
Cc: Damien.LeMoal@wdc.com, herbert@gondor.apana.org.au,
snitzer@redhat.com, kernel-team@cloudflare.com,
dm-crypt@saout.de, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, nobuto.murata@canonical.com,
ebiggers@kernel.org, clm@fb.com, dm-devel@redhat.com,
linux-btrfs@vger.kernel.org, dsterba@suse.com,
josef@toxicpanda.com, mail@maciej.szmigiero.name, agk@redhat.com
Subject: Re: [dm-crypt] [PATCH v2 1/2] dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq
Date: Fri, 1 Jan 2021 05:00:18 -0500 (EST) [thread overview]
Message-ID: <alpine.LRH.2.02.2101010450460.31009@file01.intranet.prod.int.rdu2.redhat.com> (raw)
In-Reply-To: <20201230214520.154793-2-ignat@cloudflare.com>
On Wed, 30 Dec 2020, Ignat Korchagin wrote:
> diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
> index 53791138d78b..e4fd690c70e1 100644
> --- a/drivers/md/dm-crypt.c
> +++ b/drivers/md/dm-crypt.c
> @@ -1539,7 +1549,10 @@ static blk_status_t crypt_convert(struct crypt_config *cc,
>
> while (ctx->iter_in.bi_size && ctx->iter_out.bi_size) {
>
> - crypt_alloc_req(cc, ctx);
> + r = crypt_alloc_req(cc, ctx);
> + if (r)
> + return BLK_STS_RESOURCE;
> +
> atomic_inc(&ctx->cc_pending);
>
> if (crypt_integrity_aead(cc))
> --
> 2.20.1
I'm not quite convinced that returning BLK_STS_RESOURCE will help. The
block layer will convert this value back to -ENOMEM and return it to the
caller, resulting in an I/O error.
Note that GFP_ATOMIC allocations may fail anytime and you must handle
allocation failure gracefully - i.e. process the request without any
error.
An acceptable solution would be to punt the request to a workqueue and do
GFP_NOIO allocation from the workqueue. Or add the request to some list
and process the list when some other request completes.
You should write a test that simulates allocation failure and verify that
the kernel handles it gracefully without any I/O error.
Mikulas
_______________________________________________
dm-crypt mailing list
dm-crypt@saout.de
https://www.saout.de/mailman/listinfo/dm-crypt
WARNING: multiple messages have this Message-ID (diff)
From: Mikulas Patocka <mpatocka@redhat.com>
To: Ignat Korchagin <ignat@cloudflare.com>
Cc: Damien.LeMoal@wdc.com, herbert@gondor.apana.org.au,
snitzer@redhat.com, kernel-team@cloudflare.com,
dm-crypt@saout.de, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, nobuto.murata@canonical.com,
ebiggers@kernel.org, clm@fb.com, dm-devel@redhat.com,
linux-btrfs@vger.kernel.org, dsterba@suse.com,
josef@toxicpanda.com, mail@maciej.szmigiero.name, agk@redhat.com
Subject: Re: [dm-devel] [PATCH v2 1/2] dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq
Date: Fri, 1 Jan 2021 05:00:18 -0500 (EST) [thread overview]
Message-ID: <alpine.LRH.2.02.2101010450460.31009@file01.intranet.prod.int.rdu2.redhat.com> (raw)
In-Reply-To: <20201230214520.154793-2-ignat@cloudflare.com>
On Wed, 30 Dec 2020, Ignat Korchagin wrote:
> diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
> index 53791138d78b..e4fd690c70e1 100644
> --- a/drivers/md/dm-crypt.c
> +++ b/drivers/md/dm-crypt.c
> @@ -1539,7 +1549,10 @@ static blk_status_t crypt_convert(struct crypt_config *cc,
>
> while (ctx->iter_in.bi_size && ctx->iter_out.bi_size) {
>
> - crypt_alloc_req(cc, ctx);
> + r = crypt_alloc_req(cc, ctx);
> + if (r)
> + return BLK_STS_RESOURCE;
> +
> atomic_inc(&ctx->cc_pending);
>
> if (crypt_integrity_aead(cc))
> --
> 2.20.1
I'm not quite convinced that returning BLK_STS_RESOURCE will help. The
block layer will convert this value back to -ENOMEM and return it to the
caller, resulting in an I/O error.
Note that GFP_ATOMIC allocations may fail anytime and you must handle
allocation failure gracefully - i.e. process the request without any
error.
An acceptable solution would be to punt the request to a workqueue and do
GFP_NOIO allocation from the workqueue. Or add the request to some list
and process the list when some other request completes.
You should write a test that simulates allocation failure and verify that
the kernel handles it gracefully without any I/O error.
Mikulas
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2021-01-01 10:02 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-30 21:45 [PATCH v2 0/2] dm crypt: some fixes to support dm-crypt running in softirq context Ignat Korchagin
2020-12-30 21:45 ` [dm-devel] " Ignat Korchagin
2020-12-30 21:45 ` [dm-crypt] " Ignat Korchagin
2020-12-30 21:45 ` [PATCH v2 1/2] dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq Ignat Korchagin
2020-12-30 21:45 ` [dm-devel] " Ignat Korchagin
2020-12-30 21:45 ` [dm-crypt] " Ignat Korchagin
2021-01-01 10:00 ` Mikulas Patocka [this message]
2021-01-01 10:00 ` [dm-devel] " Mikulas Patocka
2021-01-01 10:00 ` [dm-crypt] " Mikulas Patocka
2021-01-01 10:26 ` Ignat Korchagin
2021-01-01 10:26 ` [dm-devel] " Ignat Korchagin
2021-01-01 10:26 ` [dm-crypt] " Ignat Korchagin
2020-12-30 21:45 ` [PATCH v2 2/2] dm crypt: do not wait for backlogged crypto request completion in softirq Ignat Korchagin
2020-12-30 21:45 ` [dm-devel] " Ignat Korchagin
2020-12-30 21:45 ` [dm-crypt] " Ignat Korchagin
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=alpine.LRH.2.02.2101010450460.31009@file01.intranet.prod.int.rdu2.redhat.com \
--to=mpatocka@redhat.com \
--cc=Damien.LeMoal@wdc.com \
--cc=agk@redhat.com \
--cc=clm@fb.com \
--cc=dm-crypt@saout.de \
--cc=dm-devel@redhat.com \
--cc=dsterba@suse.com \
--cc=ebiggers@kernel.org \
--cc=herbert@gondor.apana.org.au \
--cc=ignat@cloudflare.com \
--cc=josef@toxicpanda.com \
--cc=kernel-team@cloudflare.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mail@maciej.szmigiero.name \
--cc=nobuto.murata@canonical.com \
--cc=snitzer@redhat.com \
--cc=stable@vger.kernel.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.