Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp11881398pxu; Fri, 1 Jan 2021 02:02:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJya+CbHYETmM2pbHeuHZYLA70E5MuC5TvPnGPXokrqKBrjUteScuxRV5NqM2q1KXArdrW3W X-Received: by 2002:a17:907:101c:: with SMTP id ox28mr53346633ejb.201.1609495353956; Fri, 01 Jan 2021 02:02:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609495353; cv=none; d=google.com; s=arc-20160816; b=YtcyW7WW1i8I2J6wQdvob0sdUR1lOewpCFIedDUkDebU+31CngsdMeSWz2H4+3zSIL lU3VJyjADUkd79iQxtA0WgwwrtN8Gh8JeVHC07wGp2gRdI3NdBqyzhuCuFReNcRALJQ9 u4wZy5X9pxa2KDAFdEOpFPV4TCyXA9b7YDh3JHZPVlp7QyblWN47Lrq7O1/wTwHQLkxY uo78PcRmUtYNql6KErVEGPggI0wY3Soiq68fbt1bKWRFLhkaGK8zZVWygvmxJUO3TdoY V/PFytnnbSn2yGmiWHsm/Cd9K1/XsQWGGW3dWJR7YY1Tk5q4EUHH4eJqRgLmSmCeDN7E 1uWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:message-id :in-reply-to:subject:cc:to:from:date:dkim-signature; bh=R8fi1KwYHvOc1yjxvPQQOFq9DnCMByDXrTVloSIzr/k=; b=WalnZOgtQRKRUVyOkfrrhOixVL7j+RM1eLMlFAR6sh0M5+iYZ5HhN4bNNnxowZDBSD TVyBE15YODEmhsiaJe4PObQ8oScUbKeX3JJ1HD59o3TJyES6xhnwVjLxAp0X1ywmJiVk mL691UyTxlWQWzckk1xGr2zWhJxB+Vg+In3EaDQDH/XZR+HBVmV+ml4ehi7Y0cjXw66K g9ckI0V7OPl9ZCPdhIXpc+4KheQosMbOC3NHV+5zUz5N52gzkFTZ16j+dZa87Eomws3i UnYzPCAZq+GE9xeNw5GlcSgl7ysiIapLtB4c2YJKXMOXxd7/3oMwvAJUtvigb9o8BuDq AS0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=RbI72ISj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e21si26024971edv.260.2021.01.01.02.02.11; Fri, 01 Jan 2021 02:02:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=RbI72ISj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726604AbhAAKCJ (ORCPT + 99 others); Fri, 1 Jan 2021 05:02:09 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:42246 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726462AbhAAKCJ (ORCPT ); Fri, 1 Jan 2021 05:02:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1609495242; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=R8fi1KwYHvOc1yjxvPQQOFq9DnCMByDXrTVloSIzr/k=; b=RbI72ISjaBdogQxxnRx8Kl2RDLigWebrfY87WlAjULdQ/E/BpIf50is2EcS/CWD8rbs8TR gqOVP8bTrHDyZBROdglcJ7KLMpGgpQIHl2Qfkv3X6B1s3gqUH34SPnyg2UW7ZgeipqOqNP OfAk3grr1de8IsVzC23ePS+DY9bS+Ng= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-249-rfV7-ssXM1SEK_UeLAG1Qg-1; Fri, 01 Jan 2021 05:00:40 -0500 X-MC-Unique: rfV7-ssXM1SEK_UeLAG1Qg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9A08B803650; Fri, 1 Jan 2021 10:00:37 +0000 (UTC) Received: from file01.intranet.prod.int.rdu2.redhat.com (file01.intranet.prod.int.rdu2.redhat.com [10.11.5.7]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D1BF31971E; Fri, 1 Jan 2021 10:00:20 +0000 (UTC) Received: from file01.intranet.prod.int.rdu2.redhat.com (localhost [127.0.0.1]) by file01.intranet.prod.int.rdu2.redhat.com (8.14.4/8.14.4) with ESMTP id 101A0KA1031760; Fri, 1 Jan 2021 05:00:20 -0500 Received: from localhost (mpatocka@localhost) by file01.intranet.prod.int.rdu2.redhat.com (8.14.4/8.14.4/Submit) with ESMTP id 101A0IkO031756; Fri, 1 Jan 2021 05:00:18 -0500 X-Authentication-Warning: file01.intranet.prod.int.rdu2.redhat.com: mpatocka owned process doing -bs Date: Fri, 1 Jan 2021 05:00:18 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@file01.intranet.prod.int.rdu2.redhat.com To: Ignat Korchagin 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 In-Reply-To: <20201230214520.154793-2-ignat@cloudflare.com> Message-ID: References: <20201230214520.154793-1-ignat@cloudflare.com> <20201230214520.154793-2-ignat@cloudflare.com> User-Agent: Alpine 2.02 (LRH 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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