From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 32ECBC4321E for ; Wed, 30 Nov 2022 16:59:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669827552; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=XA3Dg0oXMUZTdCpHk6wAhztKEPziygR0VAgZnLUfyto=; b=eGCfpgKkoakIAyi+CPu6bkPPW5ducVh5S6/l6XShWQiSUNyERirzWzw2lapBv41s289OUp aLT/EUZ3KHoWys+TwEZqvqCtbWrQczV8+egpglgdZ0FjNxIIpMS/UtHH9Ghj2AGtodFFOg hySFjrrGqCFJbBaEKhgV1IGLGoKyfBA= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-3-_1uBKZyfN9igbu0EYe_mJg-1; Wed, 30 Nov 2022 11:59:10 -0500 X-MC-Unique: _1uBKZyfN9igbu0EYe_mJg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6D89F3C11041; Wed, 30 Nov 2022 16:59:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 15F7A7AE5; Wed, 30 Nov 2022 16:59:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D8C5519465A2; Wed, 30 Nov 2022 16:59:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 899B11946586 for ; Wed, 30 Nov 2022 16:29:26 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id AEF29492CA4; Wed, 30 Nov 2022 16:29:26 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A7F7F492CA2 for ; Wed, 30 Nov 2022 16:29:26 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 84162101A52A for ; Wed, 30 Nov 2022 16:29:26 +0000 (UTC) Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-161-zaBJ09LdM7CFMWYWo0LuwQ-1; Wed, 30 Nov 2022 11:29:25 -0500 X-MC-Unique: zaBJ09LdM7CFMWYWo0LuwQ-1 Received: by mail-qv1-f70.google.com with SMTP id on28-20020a056214449c00b004bbf12d7976so26956485qvb.18 for ; Wed, 30 Nov 2022 08:29:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ksypm4g/dHsSdYfI6/rLPDOiA9C/16H1SAqXGRIbHCs=; b=MOsM69mczvKMc9eVAQUx3teFHZ9Myax+tA8deo4foHo2FzeusejR/ECZFyw9st8bhe 4jYfXioyzsZOZpvUimAbu3Pj4fOdt5aXCKZsfGFW49mGy/tuAEf9zRAQQmw/vEQH//y8 SOON4Wbkoh92MBxw5MwgcNbPydHj5mWDlXf2mSLAMvU9rY65JKS9YIb3wFXyKtVV9nlg 9sD/8G2pTncgoUfxd5DPkbeszFXbgvaQ7cId6z+BzBrqqSfEqxTEsm5zyNIU4Rp50tEU M5N5VA1RUiNBepQqCVPvp2GJw9pDzmWcAad53ln8hyZO8Fq4SBxWDS8TuXUHZfzn5/6G zWbg== X-Gm-Message-State: ANoB5plDUr1UHbJyQswqwoU5WOrlFh0DoK6L7kMBeOTrUOFxQ7cYphGz cPADuNLJWusoALDSF7L27zZKYD79Az6yk4WgoB+nW0IfzrCbNJMk9sQe3gV0lmn3sOTki2869pJ I2ktc33MwXK/eeg== X-Received: by 2002:a0c:ee45:0:b0:4c6:e866:cccb with SMTP id m5-20020a0cee45000000b004c6e866cccbmr24214687qvs.42.1669825762808; Wed, 30 Nov 2022 08:29:22 -0800 (PST) X-Google-Smtp-Source: AA0mqf58i74E4ozsHVqy3QaFXNW2a5FlzSd2OBkLkZvnKJ5pGAzXNyi3AjqZofl0YN8GWTW1NZMIMA== X-Received: by 2002:a0c:ee45:0:b0:4c6:e866:cccb with SMTP id m5-20020a0cee45000000b004c6e866cccbmr24214655qvs.42.1669825762469; Wed, 30 Nov 2022 08:29:22 -0800 (PST) Received: from localhost (pool-68-160-173-162.bstnma.fios.verizon.net. [68.160.173.162]) by smtp.gmail.com with ESMTPSA id v15-20020a05620a440f00b006ecfb2c86d3sm1431829qkp.130.2022.11.30.08.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Nov 2022 08:29:21 -0800 (PST) Date: Wed, 30 Nov 2022 11:29:20 -0500 From: Mike Snitzer To: Zhihao Cheng Message-ID: References: <20221130133134.2870646-1-chengzhihao1@huawei.com> MIME-Version: 1.0 In-Reply-To: <20221130133134.2870646-1-chengzhihao1@huawei.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Subject: Re: [dm-devel] [PATCH v3] dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jack@suse.cz, dm-devel@redhat.com, yi.zhang@huawei.com, snitzer@kernel.org, linux-kernel@vger.kernel.org, ejt@redhat.com, Martin.Wilck@suse.com Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBOb3YgMzAgMjAyMiBhdCAgODozMVAgLTA1MDAsClpoaWhhbyBDaGVuZyA8Y2hlbmd6 aGloYW8xQGh1YXdlaS5jb20+IHdyb3RlOgoKPiBGb2xsb3dpbmcgY29uY3VycmVudCBwcm9jZXNz ZXM6Cj4gCj4gICAgICAgICAgIFAxKGRyb3AgY2FjaGUpICAgICAgICAgICAgICAgIFAyKGt3b3Jr ZXIpCj4gZHJvcF9jYWNoZXNfc3lzY3RsX2hhbmRsZXIKPiAgZHJvcF9zbGFiCj4gICBzaHJpbmtf c2xhYgo+ICAgIGRvd25fcmVhZCgmc2hyaW5rZXJfcndzZW0pICAtIExPQ0sgQQo+ICAgIGRvX3No cmlua19zbGFiCj4gICAgIHN1cGVyX2NhY2hlX3NjYW4KPiAgICAgIHBydW5lX2ljYWNoZV9zYgo+ ICAgICAgIGRpc3Bvc2VfbGlzdAo+ICAgICAgICBldmljdAo+ICAgICAgICAgZXh0NF9ldmljdF9p bm9kZQo+IAkgZXh0NF9jbGVhcl9pbm9kZQo+IAkgIGV4dDRfZGlzY2FyZF9wcmVhbGxvY2F0aW9u cwo+IAkgICBleHQ0X21iX2xvYWRfYnVkZHlfZ2ZwCj4gCSAgICBleHQ0X21iX2luaXRfY2FjaGUK PiAJICAgICBleHQ0X3JlYWRfYmxvY2tfYml0bWFwX25vd2FpdAo+IAkgICAgICBleHQ0X3JlYWRf Ymhfbm93YWl0Cj4gCSAgICAgICBzdWJtaXRfYmgKPiAJICAgICAgICBkbV9zdWJtaXRfYmlvCj4g CQkgICAgICAgICAgICAgICAgIGRvX3dvcmtlcgo+IAkJCQkgIHByb2Nlc3NfZGVmZXJyZWRfYmlv cwo+IAkJCQkgICBjb21taXQKPiAJCQkJICAgIG1ldGFkYXRhX29wZXJhdGlvbl9mYWlsZWQKPiAJ CQkJICAgICBkbV9wb29sX2Fib3J0X21ldGFkYXRhCj4gCQkJCSAgICAgIGRvd25fd3JpdGUoJnBt ZC0+cm9vdF9sb2NrKSAtIExPQ0sgQgo+IAkJICAgICAgICAgICAgICAgICAgICAgIF9fZGVzdHJv eV9wZXJzaXN0ZW50X2RhdGFfb2JqZWN0cwo+IAkJCQkgICAgICAgZG1fYmxvY2tfbWFuYWdlcl9k ZXN0cm95Cj4gCQkJCSAgICAgICAgZG1fYnVmaW9fY2xpZW50X2Rlc3Ryb3kKPiAJCQkJICAgICAg ICAgdW5yZWdpc3Rlcl9zaHJpbmtlcgo+IAkJCQkJICBkb3duX3dyaXRlKCZzaHJpbmtlcl9yd3Nl bSkKPiAJCSB0aGluX21hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gCQkgIGRtX3Ro aW5fZmluZF9ibG9jayAgICAgICAgICAgICAgICAg4oaTCj4gCQkgICBkb3duX3JlYWQoJnBtZC0+ cm9vdF9sb2NrKSAtLT4gQUJCQSBkZWFkbG9jawo+IAo+ICwgd2hpY2ggdHJpZ2dlcnMgaHVuZyB0 YXNrOgo+IAo+IFsgICA3Ni45NzQ4MjBdIElORk86IHRhc2sga3dvcmtlci91NDozOjYzIGJsb2Nr ZWQgZm9yIG1vcmUgdGhhbiAxNSBzZWNvbmRzLgo+IFsgICA3Ni45NzYwMTldICAgICAgIE5vdCB0 YWludGVkIDYuMS4wLXJjNC0wMDAxMS1nOGYxN2RkMzUwMzY0LWRpcnR5ICM5MTAKPiBbICAgNzYu OTc4NTIxXSB0YXNrOmt3b3JrZXIvdTQ6MyAgICBzdGF0ZTpEIHN0YWNrOjAgICAgIHBpZDo2MyAg ICBwcGlkOjIKPiBbICAgNzYuOTc4NTM0XSBXb3JrcXVldWU6IGRtLXRoaW4gZG9fd29ya2VyCj4g WyAgIDc2Ljk3ODU1Ml0gQ2FsbCBUcmFjZToKPiBbICAgNzYuOTc4NTY0XSAgX19zY2hlZHVsZSsw eDZiYS8weDEwZjAKPiBbICAgNzYuOTc4NTgyXSAgc2NoZWR1bGUrMHg5ZC8weDFlMAo+IFsgICA3 Ni45Nzg1ODhdICByd3NlbV9kb3duX3dyaXRlX3Nsb3dwYXRoKzB4NTg3LzB4ZGYwCj4gWyAgIDc2 Ljk3ODYwMF0gIGRvd25fd3JpdGUrMHhlYy8weDExMAo+IFsgICA3Ni45Nzg2MDddICB1bnJlZ2lz dGVyX3Nocmlua2VyKzB4MmMvMHhmMAo+IFsgICA3Ni45Nzg2MTZdICBkbV9idWZpb19jbGllbnRf ZGVzdHJveSsweDExNi8weDNkMAo+IFsgICA3Ni45Nzg2MjVdICBkbV9ibG9ja19tYW5hZ2VyX2Rl c3Ryb3krMHgxOS8weDQwCj4gWyAgIDc2Ljk3ODYyOV0gIF9fZGVzdHJveV9wZXJzaXN0ZW50X2Rh dGFfb2JqZWN0cysweDVlLzB4NzAKPiBbICAgNzYuOTc4NjM2XSAgZG1fcG9vbF9hYm9ydF9tZXRh ZGF0YSsweDhlLzB4MTAwCj4gWyAgIDc2Ljk3ODY0M10gIG1ldGFkYXRhX29wZXJhdGlvbl9mYWls ZWQrMHg4Ni8weDExMAo+IFsgICA3Ni45Nzg2NDldICBjb21taXQrMHg2YS8weDIzMAo+IFsgICA3 Ni45Nzg2NTVdICBkb193b3JrZXIrMHhjNmUvMHhkOTAKPiBbICAgNzYuOTc4NzAyXSAgcHJvY2Vz c19vbmVfd29yaysweDI2OS8weDYzMAo+IFsgICA3Ni45Nzg3MTRdICB3b3JrZXJfdGhyZWFkKzB4 MjY2LzB4NjMwCj4gWyAgIDc2Ljk3ODczMF0gIGt0aHJlYWQrMHgxNTEvMHgxYjAKPiBbICAgNzYu OTc4NzcyXSBJTkZPOiB0YXNrIHRlc3Quc2g6MjY0NiBibG9ja2VkIGZvciBtb3JlIHRoYW4gMTUg c2Vjb25kcy4KPiBbICAgNzYuOTc5NzU2XSAgICAgICBOb3QgdGFpbnRlZCA2LjEuMC1yYzQtMDAw MTEtZzhmMTdkZDM1MDM2NC1kaXJ0eSAjOTEwCj4gWyAgIDc2Ljk4MjExMV0gdGFzazp0ZXN0LnNo ICAgICAgICAgc3RhdGU6RCBzdGFjazowICAgICBwaWQ6MjY0NiAgcHBpZDoyNDU5Cj4gWyAgIDc2 Ljk4MjEyOF0gQ2FsbCBUcmFjZToKPiBbICAgNzYuOTgyMTM5XSAgX19zY2hlZHVsZSsweDZiYS8w eDEwZjAKPiBbICAgNzYuOTgyMTU1XSAgc2NoZWR1bGUrMHg5ZC8weDFlMAo+IFsgICA3Ni45ODIx NTldICByd3NlbV9kb3duX3JlYWRfc2xvd3BhdGgrMHg0ZjQvMHg5MTAKPiBbICAgNzYuOTgyMTcz XSAgZG93bl9yZWFkKzB4ODQvMHgxNzAKPiBbICAgNzYuOTgyMTc3XSAgZG1fdGhpbl9maW5kX2Js b2NrKzB4NGMvMHhkMAo+IFsgICA3Ni45ODIxODNdICB0aGluX21hcCsweDIwMS8weDNkMAo+IFsg ICA3Ni45ODIxODhdICBfX21hcF9iaW8rMHg1Yi8weDM1MAo+IFsgICA3Ni45ODIxOTVdICBkbV9z dWJtaXRfYmlvKzB4MmI2LzB4OTMwCj4gWyAgIDc2Ljk4MjIwMl0gIF9fc3VibWl0X2JpbysweDEy My8weDJkMAo+IFsgICA3Ni45ODIyMDldICBzdWJtaXRfYmlvX25vYWNjdF9ub2NoZWNrKzB4MTAx LzB4M2UwCj4gWyAgIDc2Ljk4MjIyMl0gIHN1Ym1pdF9iaW9fbm9hY2N0KzB4Mzg5LzB4NzcwCj4g WyAgIDc2Ljk4MjIyN10gIHN1Ym1pdF9iaW8rMHg1MC8weGMwCj4gWyAgIDc2Ljk4MjIzMl0gIHN1 Ym1pdF9iaF93YmMrMHgxNWUvMHgyMzAKPiBbICAgNzYuOTgyMjM4XSAgc3VibWl0X2JoKzB4MTQv MHgyMAo+IFsgICA3Ni45ODIyNDFdICBleHQ0X3JlYWRfYmhfbm93YWl0KzB4YzUvMHgxMzAKPiBb ICAgNzYuOTgyMjQ3XSAgZXh0NF9yZWFkX2Jsb2NrX2JpdG1hcF9ub3dhaXQrMHgzNDAvMHhjNjAK PiBbICAgNzYuOTgyMjU0XSAgZXh0NF9tYl9pbml0X2NhY2hlKzB4MWNlLzB4ZGMwCj4gWyAgIDc2 Ljk4MjI1OV0gIGV4dDRfbWJfbG9hZF9idWRkeV9nZnArMHg5ODcvMHhmYTAKPiBbICAgNzYuOTgy MjYzXSAgZXh0NF9kaXNjYXJkX3ByZWFsbG9jYXRpb25zKzB4NDVkLzB4ODMwCj4gWyAgIDc2Ljk4 MjI3NF0gIGV4dDRfY2xlYXJfaW5vZGUrMHg0OC8weGYwCj4gWyAgIDc2Ljk4MjI4MF0gIGV4dDRf ZXZpY3RfaW5vZGUrMHhjZi8weGM3MAo+IFsgICA3Ni45ODIyODVdICBldmljdCsweDExOS8weDJi MAo+IFsgICA3Ni45ODIyOTBdICBkaXNwb3NlX2xpc3QrMHg0My8weGEwCj4gWyAgIDc2Ljk4MjI5 NF0gIHBydW5lX2ljYWNoZV9zYisweDY0LzB4OTAKPiBbICAgNzYuOTgyMjk4XSAgc3VwZXJfY2Fj aGVfc2NhbisweDE1NS8weDIxMAo+IFsgICA3Ni45ODIzMDNdICBkb19zaHJpbmtfc2xhYisweDE5 ZS8weDRlMAo+IFsgICA3Ni45ODIzMTBdICBzaHJpbmtfc2xhYisweDJiZC8weDQ1MAo+IFsgICA3 Ni45ODIzMTddICBkcm9wX3NsYWIrMHhjYy8weDFhMAo+IFsgICA3Ni45ODIzMjNdICBkcm9wX2Nh Y2hlc19zeXNjdGxfaGFuZGxlcisweGI3LzB4ZTAKPiBbICAgNzYuOTgyMzI3XSAgcHJvY19zeXNf Y2FsbF9oYW5kbGVyKzB4MWJjLzB4MzAwCj4gWyAgIDc2Ljk4MjMzMV0gIHByb2Nfc3lzX3dyaXRl KzB4MTcvMHgyMAo+IFsgICA3Ni45ODIzMzRdICB2ZnNfd3JpdGUrMHgzZDMvMHg1NzAKPiBbICAg NzYuOTgyMzQyXSAga3N5c193cml0ZSsweDczLzB4MTYwCj4gWyAgIDc2Ljk4MjM0N10gIF9feDY0 X3N5c193cml0ZSsweDFlLzB4MzAKPiBbICAgNzYuOTgyMzUyXSAgZG9fc3lzY2FsbF82NCsweDM1 LzB4ODAKPiBbICAgNzYuOTgyMzU3XSAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4 NjMvMHhjZAo+IAo+IEZ1bmN0aW9uIG1ldGFkYXRhX29wZXJhdGlvbl9mYWlsZWQoKSBpcyBjYWxs ZWQgd2hlbiBvcGVyYXRpb25zIGZhaWxlZAo+IG9uIGRtIHBvb2wgbWV0YWRhdGEsIGRtIHBvb2wg d2lsbCBkZXN0cm95IGFuZCByZWNyZWF0ZSBtZXRhZGF0YS4gU28sCj4gc2hyaW5rZXIgd2lsbCBi ZSB1bnJlZ2lzdGVyZWQgYW5kIHJlZ2lzdGVyZWQsIHdoaWNoIGNvdWxkIGRvd24gd3JpdGUKPiBz aHJpbmtlcl9yd3NlbSB1bmRlciBwbWRfd3JpdGVfbG9jay4KPiAKPiBGaXggaXQgYnkgYWxsb2Nh dGluZyBkbV9ibG9ja19tYW5hZ2VyIGJlZm9yZSBsb2NraW5nIHBtZC0+cm9vdF9sb2NrCj4gYW5k IGRlc3Ryb3lpbmcgb2xkIGRtX2Jsb2NrX21hbmFnZXIgYWZ0ZXIgdW5sb2NraW5nIHBtZC0+cm9v dF9sb2NrLAo+IHRoZW4gb2xkIGRtX2Jsb2NrX21hbmFnZXIgaXMgcmVwbGFjZWQgd2l0aCBuZXcg ZG1fYmxvY2tfbWFuYWdlciB1bmRlcgo+IHBtZC0+cm9vdF9sb2NrLiBTbywgc2hyaW5rZXIgcmVn aXN0ZXIvdW5yZWdpc3RlciBjb3VsZCBiZSBkb25lIHdpdGhvdXQKPiBob2xkaW5nIHBtZC0+cm9v dF9sb2NrLgo+IAo+IEZldGNoIGEgcmVwcm9kdWNlciBpbiBbTGlua10uCj4gCj4gTGluazogaHR0 cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY2NzYKPiBGaXhlczog ZTQ5ZTU4Mjk2NWIzICgiZG0gdGhpbjogYWRkIHJlYWQgb25seSBhbmQgZmFpbCBpbyBtb2RlcyIp Cj4gU2lnbmVkLW9mZi1ieTogWmhpaGFvIENoZW5nIDxjaGVuZ3poaWhhbzFAaHVhd2VpLmNvbT4K PiAtLS0KPiAgdjEtPnYyOiBVcGRhdGUgZml4IHN0cmF0ZWd5LiBBbGxvY2F0aW5nL0Rlc3Ryb3lp bmcgZG1fYmxvY2tfbWFuYWdlcgo+IAkgb3V0c2lkZSBvZiBsb2NrIHBtZC0+cm9vdC4KPiAgdjIt PnYzOiBNb3ZlIGZhaWxfaW8gc2V0dGluZyBpbnNpZGUgcG1kLT5yb290IGxvY2suCj4gIGRyaXZl cnMvbWQvZG0tdGhpbi1tZXRhZGF0YS5jIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi1tZXRhZGF0YS5jIGIvZHJp dmVycy9tZC9kbS10aGluLW1ldGFkYXRhLmMKPiBpbmRleCBhMjczOTVjODYyMWYuLjc3MjkzNzI1 MTliOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21kL2RtLXRoaW4tbWV0YWRhdGEuYwo+ICsrKyBi L2RyaXZlcnMvbWQvZG0tdGhpbi1tZXRhZGF0YS5jCj4gQEAgLTc4Miw3ICs3ODIsNiBAQCBzdGF0 aWMgdm9pZCBfX2Rlc3Ryb3lfcGVyc2lzdGVudF9kYXRhX29iamVjdHMoc3RydWN0IGRtX3Bvb2xf bWV0YWRhdGEgKnBtZCkKPiAgCWRtX3NtX2Rlc3Ryb3kocG1kLT5tZXRhZGF0YV9zbSk7Cj4gIAlk bV90bV9kZXN0cm95KHBtZC0+bmJfdG0pOwo+ICAJZG1fdG1fZGVzdHJveShwbWQtPnRtKTsKPiAt CWRtX2Jsb2NrX21hbmFnZXJfZGVzdHJveShwbWQtPmJtKTsKPiAgfQo+ICAKPiAgc3RhdGljIGlu dCBfX2JlZ2luX3RyYW5zYWN0aW9uKHN0cnVjdCBkbV9wb29sX21ldGFkYXRhICpwbWQpCj4gQEAg LTk4OCw4ICs5ODcsMTAgQEAgaW50IGRtX3Bvb2xfbWV0YWRhdGFfY2xvc2Uoc3RydWN0IGRtX3Bv b2xfbWV0YWRhdGEgKnBtZCkKPiAgCQkJICAgICAgIF9fZnVuY19fLCByKTsKPiAgCX0KPiAgCXBt ZF93cml0ZV91bmxvY2socG1kKTsKPiAtCWlmICghcG1kLT5mYWlsX2lvKQo+ICsJaWYgKCFwbWQt PmZhaWxfaW8pIHsKPiAgCQlfX2Rlc3Ryb3lfcGVyc2lzdGVudF9kYXRhX29iamVjdHMocG1kKTsK PiArCQlkbV9ibG9ja19tYW5hZ2VyX2Rlc3Ryb3kocG1kLT5ibSk7Cj4gKwl9Cj4gIAo+ICAJa2Zy ZWUocG1kKTsKPiAgCXJldHVybiAwOwo+IEBAIC0xODYwLDE5ICsxODYxLDQ2IEBAIHN0YXRpYyB2 b2lkIF9fc2V0X2Fib3J0X3dpdGhfY2hhbmdlc19mbGFncyhzdHJ1Y3QgZG1fcG9vbF9tZXRhZGF0 YSAqcG1kKQo+ICBpbnQgZG1fcG9vbF9hYm9ydF9tZXRhZGF0YShzdHJ1Y3QgZG1fcG9vbF9tZXRh ZGF0YSAqcG1kKQo+ICB7Cj4gIAlpbnQgciA9IC1FSU5WQUw7Cj4gKwlzdHJ1Y3QgZG1fYmxvY2tf bWFuYWdlciAqb2xkX2JtID0gTlVMTCwgKm5ld19ibSA9IE5VTEw7Cj4gIAo+IC0JcG1kX3dyaXRl X2xvY2socG1kKTsKPiAgCWlmIChwbWQtPmZhaWxfaW8pCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJbmV3X2JtID0gZG1fYmxvY2tfbWFuYWdlcl9jcmVhdGUocG1kLT5iZGV2LCBUSElOX01F VEFEQVRBX0JMT0NLX1NJWkUgPDwgU0VDVE9SX1NISUZULAo+ICsJCQkJCSBUSElOX01BWF9DT05D VVJSRU5UX0xPQ0tTKTsKPiArCj4gKwlwbWRfd3JpdGVfbG9jayhwbWQpOwo+ICsJaWYgKHBtZC0+ ZmFpbF9pbykgewo+ICsJCXBtZF93cml0ZV91bmxvY2socG1kKTsKPiAgCQlnb3RvIG91dDsKPiAr CX0KPiAgCj4gIAlfX3NldF9hYm9ydF93aXRoX2NoYW5nZXNfZmxhZ3MocG1kKTsKPiAgCV9fZGVz dHJveV9wZXJzaXN0ZW50X2RhdGFfb2JqZWN0cyhwbWQpOwo+IC0JciA9IF9fY3JlYXRlX3BlcnNp c3RlbnRfZGF0YV9vYmplY3RzKHBtZCwgZmFsc2UpOwo+ICsJb2xkX2JtID0gcG1kLT5ibTsKPiAr CWlmIChJU19FUlIobmV3X2JtKSkgewo+ICsJCS8qIFJldHVybiBiYWNrIGlmIGNyZWF0aW5nIGRt X2Jsb2NrX21hbmFnZXIgZmFpbGVkLiAqLwo+ICsJCURNRVJSKCJjb3VsZCBub3QgY3JlYXRlIGJs b2NrIG1hbmFnZXIiKTsKPiArCQlwbWQtPmJtID0gTlVMTDsKPiArCQlyID0gUFRSX0VSUihuZXdf Ym0pOwo+ICsJCWdvdG8gb3V0X3VubG9jazsKPiArCX0KPiArCj4gKwlwbWQtPmJtID0gbmV3X2Jt Owo+ICsJciA9IF9fb3Blbl9vcl9mb3JtYXRfbWV0YWRhdGEocG1kLCBmYWxzZSk7Cj4gKwlpZiAo cikgewo+ICsJCXBtZC0+Ym0gPSBOVUxMOwo+ICsJCWdvdG8gb3V0X3VubG9jazsKPiArCX0KPiAr CW5ld19ibSA9IE5VTEw7Cj4gK291dF91bmxvY2s6Cj4gIAlpZiAocikKPiAgCQlwbWQtPmZhaWxf aW8gPSB0cnVlOwo+IC0KPiAtb3V0Ogo+ICAJcG1kX3dyaXRlX3VubG9jayhwbWQpOwo+ICsJZG1f YmxvY2tfbWFuYWdlcl9kZXN0cm95KG9sZF9ibSk7Cj4gK291dDoKPiArCWlmIChuZXdfYm0gJiYg IUlTX0VSUihuZXdfYm0pKQo+ICsJCWRtX2Jsb2NrX21hbmFnZXJfZGVzdHJveShuZXdfYm0pOwo+ ICAKPiAgCXJldHVybiByOwo+ICB9Cj4gLS0gCj4gMi4zMS4xCj4gCgpJJ3ZlIHBpY2tlZCB5b3Vy IHBhdGNoIHVwIGFuZCBmb2xkZWQgaW50byB0aGVzZSBmb2xsb3dpbmcgY2hhbmdlczoKCmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL2RtLXRoaW4tbWV0YWRhdGEuYyBiL2RyaXZlcnMvbWQvZG0tdGhp bi1tZXRhZGF0YS5jCmluZGV4IDc3MjkzNzI1MTliOC4uMWE2MjIyNmFjMzRlIDEwMDY0NAotLS0g YS9kcml2ZXJzL21kL2RtLXRoaW4tbWV0YWRhdGEuYworKysgYi9kcml2ZXJzL21kL2RtLXRoaW4t bWV0YWRhdGEuYwpAQCAtNzc2LDEyICs3NzYsMTUgQEAgc3RhdGljIGludCBfX2NyZWF0ZV9wZXJz aXN0ZW50X2RhdGFfb2JqZWN0cyhzdHJ1Y3QgZG1fcG9vbF9tZXRhZGF0YSAqcG1kLCBib29sIGYK IAlyZXR1cm4gcjsKIH0KIAotc3RhdGljIHZvaWQgX19kZXN0cm95X3BlcnNpc3RlbnRfZGF0YV9v YmplY3RzKHN0cnVjdCBkbV9wb29sX21ldGFkYXRhICpwbWQpCitzdGF0aWMgdm9pZCBfX2Rlc3Ry b3lfcGVyc2lzdGVudF9kYXRhX29iamVjdHMoc3RydWN0IGRtX3Bvb2xfbWV0YWRhdGEgKnBtZCwK KwkJCQkJICAgICAgYm9vbCBkZXN0cm95X2JtKQogewogCWRtX3NtX2Rlc3Ryb3kocG1kLT5kYXRh X3NtKTsKIAlkbV9zbV9kZXN0cm95KHBtZC0+bWV0YWRhdGFfc20pOwogCWRtX3RtX2Rlc3Ryb3ko cG1kLT5uYl90bSk7CiAJZG1fdG1fZGVzdHJveShwbWQtPnRtKTsKKwlpZiAoZGVzdHJveV9ibSkK KwkJZG1fYmxvY2tfbWFuYWdlcl9kZXN0cm95KHBtZC0+Ym0pOwogfQogCiBzdGF0aWMgaW50IF9f YmVnaW5fdHJhbnNhY3Rpb24oc3RydWN0IGRtX3Bvb2xfbWV0YWRhdGEgKnBtZCkKQEAgLTk4Nywx MCArOTkwLDggQEAgaW50IGRtX3Bvb2xfbWV0YWRhdGFfY2xvc2Uoc3RydWN0IGRtX3Bvb2xfbWV0 YWRhdGEgKnBtZCkKIAkJCSAgICAgICBfX2Z1bmNfXywgcik7CiAJfQogCXBtZF93cml0ZV91bmxv Y2socG1kKTsKLQlpZiAoIXBtZC0+ZmFpbF9pbykgewotCQlfX2Rlc3Ryb3lfcGVyc2lzdGVudF9k YXRhX29iamVjdHMocG1kKTsKLQkJZG1fYmxvY2tfbWFuYWdlcl9kZXN0cm95KHBtZC0+Ym0pOwot CX0KKwlpZiAoIXBtZC0+ZmFpbF9pbykKKwkJX19kZXN0cm95X3BlcnNpc3RlbnRfZGF0YV9vYmpl Y3RzKHBtZCwgdHJ1ZSk7CiAKIAlrZnJlZShwbWQpOwogCXJldHVybiAwOwpAQCAtMTg2Myw5ICsx ODY0LDE2IEBAIGludCBkbV9wb29sX2Fib3J0X21ldGFkYXRhKHN0cnVjdCBkbV9wb29sX21ldGFk YXRhICpwbWQpCiAJaW50IHIgPSAtRUlOVkFMOwogCXN0cnVjdCBkbV9ibG9ja19tYW5hZ2VyICpv bGRfYm0gPSBOVUxMLCAqbmV3X2JtID0gTlVMTDsKIAotCWlmIChwbWQtPmZhaWxfaW8pCi0JCXJl dHVybiAtRUlOVkFMOworCS8qIGZhaWxfaW8gaXMgZG91YmxlLWNoZWNrZWQgd2l0aCBwbWQtPnJv b3RfbG9jayBoZWxkIGJlbG93ICovCisJaWYgKHVubGlrZWx5KHBtZC0+ZmFpbF9pbykpCisJCXJl dHVybiByOwogCisJLyoKKwkgKiBSZXBsYWNlbWVudCBibG9jayBtYW5hZ2VyIChuZXdfYm0pIGlz IGNyZWF0ZWQgYW5kIG9sZF9ibSBkZXN0cm95ZWQgb3V0c2lkZSBvZgorCSAqIHBtZCByb290X2xv Y2sgdG8gYXZvaWQgQUJCQSBkZWFkbG9jayB0aGF0IHdvdWxkIHJlc3VsdCAoZHVlIHRvIGxpZmUt Y3ljbGUgb2YKKwkgKiBzaHJpbmtlciBhc3NvY2lhdGVkIHdpdGggdGhlIGJsb2NrIG1hbmFnZXIn cyBidWZpbyBjbGllbnQgdnMgcG1kIHJvb3RfbG9jaykuCisJICogLSBtdXN0IHRha2Ugc2hyaW5r ZXJfcndzZW0gd2l0aG91dCBob2xkaW5nIHBtZC0+cm9vdF9sb2NrCisJICovCiAJbmV3X2JtID0g ZG1fYmxvY2tfbWFuYWdlcl9jcmVhdGUocG1kLT5iZGV2LCBUSElOX01FVEFEQVRBX0JMT0NLX1NJ WkUgPDwgU0VDVE9SX1NISUZULAogCQkJCQkgVEhJTl9NQVhfQ09OQ1VSUkVOVF9MT0NLUyk7CiAK QEAgLTE4NzYsMTEgKzE4ODQsMTAgQEAgaW50IGRtX3Bvb2xfYWJvcnRfbWV0YWRhdGEoc3RydWN0 IGRtX3Bvb2xfbWV0YWRhdGEgKnBtZCkKIAl9CiAKIAlfX3NldF9hYm9ydF93aXRoX2NoYW5nZXNf ZmxhZ3MocG1kKTsKLQlfX2Rlc3Ryb3lfcGVyc2lzdGVudF9kYXRhX29iamVjdHMocG1kKTsKKwlf X2Rlc3Ryb3lfcGVyc2lzdGVudF9kYXRhX29iamVjdHMocG1kLCBmYWxzZSk7CiAJb2xkX2JtID0g cG1kLT5ibTsKIAlpZiAoSVNfRVJSKG5ld19ibSkpIHsKLQkJLyogUmV0dXJuIGJhY2sgaWYgY3Jl YXRpbmcgZG1fYmxvY2tfbWFuYWdlciBmYWlsZWQuICovCi0JCURNRVJSKCJjb3VsZCBub3QgY3Jl YXRlIGJsb2NrIG1hbmFnZXIiKTsKKwkJRE1FUlIoImNvdWxkIG5vdCBjcmVhdGUgYmxvY2sgbWFu YWdlciBkdXJpbmcgYWJvcnQiKTsKIAkJcG1kLT5ibSA9IE5VTEw7CiAJCXIgPSBQVFJfRVJSKG5l d19ibSk7CiAJCWdvdG8gb3V0X3VubG9jazsKCi0tCmRtLWRldmVsIG1haWxpbmcgbGlzdApkbS1k ZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vbGlzdG1hbi5yZWRoYXQuY29tL21haWxtYW4vbGlzdGlu Zm8vZG0tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4D9DC352A1 for ; Wed, 30 Nov 2022 16:30:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230162AbiK3Qan (ORCPT ); Wed, 30 Nov 2022 11:30:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230238AbiK3Qa0 (ORCPT ); Wed, 30 Nov 2022 11:30:26 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E0C5B1E73C for ; Wed, 30 Nov 2022 08:29:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669825767; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ksypm4g/dHsSdYfI6/rLPDOiA9C/16H1SAqXGRIbHCs=; b=Lmc7QLHksA6ed97S4MRY16QHIDLl3gOHrf1XLTYTA5wudt4ptLpEk9wLI3QXgyhdx81J4Z y267hmDmX+aDeNxzV9EQ5gik8makbJn9rbfJJDo8ZON7+eNnyIQzYACefu54BSYEB1KDyD 8LeK0UV6IP9cFPgZx8yZnt0nzlDQo6I= Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-185-65uKdFJAOt674Mh6MrKjhw-1; Wed, 30 Nov 2022 11:29:25 -0500 X-MC-Unique: 65uKdFJAOt674Mh6MrKjhw-1 Received: by mail-qt1-f197.google.com with SMTP id n12-20020ac85a0c000000b003a5849497f9so30114663qta.20 for ; Wed, 30 Nov 2022 08:29:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ksypm4g/dHsSdYfI6/rLPDOiA9C/16H1SAqXGRIbHCs=; b=PkTz8j+6trcWRrikm05vPGrKs46v88mz8EJoRlWgkvaXDDO5gfXyAdB2G5meOO8JtZ yZ/mP2dwoZUgb0NupJJSgBlpg5oScBiIx6FVzZj1r/twQzl7p1/HFHbIRNZIVcfqc/6L UJMGSBBhSwIyxPa7bcHjA3SPGfd7AGaNR7bKYsYZD+euukQ+65inFQE24X2ovjelYY7u K+bYpoeN10a0sPPM9+3su2MA/kZ+eJPphLuVpAAgYaNsB3nyi6j/W+tQvVVg9GRLR+JA khM2C2nKwtkRjLGj8LcwpJbGzwn4yOKYsquV48jMwyGro7i2m5nDVU25c59gKjIKjXLe jJKg== X-Gm-Message-State: ANoB5pl8QQ/aTR+ExOQNQuiXM9wYvTNkq5lM/tfC7NhuijHingkythmy oDeN1jZu+HZTTc3kQ0zBTzuk5wCg3C/GQabyXc8weo/RAFEV044aXNI8BaKQPCNXX/1Z8LySqVJ pRyXObJSvjW4U6+SzMII6Y6A= X-Received: by 2002:a0c:ee45:0:b0:4c6:e866:cccb with SMTP id m5-20020a0cee45000000b004c6e866cccbmr24214686qvs.42.1669825762807; Wed, 30 Nov 2022 08:29:22 -0800 (PST) X-Google-Smtp-Source: AA0mqf58i74E4ozsHVqy3QaFXNW2a5FlzSd2OBkLkZvnKJ5pGAzXNyi3AjqZofl0YN8GWTW1NZMIMA== X-Received: by 2002:a0c:ee45:0:b0:4c6:e866:cccb with SMTP id m5-20020a0cee45000000b004c6e866cccbmr24214655qvs.42.1669825762469; Wed, 30 Nov 2022 08:29:22 -0800 (PST) Received: from localhost (pool-68-160-173-162.bstnma.fios.verizon.net. [68.160.173.162]) by smtp.gmail.com with ESMTPSA id v15-20020a05620a440f00b006ecfb2c86d3sm1431829qkp.130.2022.11.30.08.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Nov 2022 08:29:21 -0800 (PST) Date: Wed, 30 Nov 2022 11:29:20 -0500 From: Mike Snitzer To: Zhihao Cheng Cc: Martin.Wilck@suse.com, snitzer@kernel.org, jack@suse.cz, ejt@redhat.com, linux-kernel@vger.kernel.org, dm-devel@redhat.com, yi.zhang@huawei.com Subject: Re: [PATCH v3] dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata Message-ID: References: <20221130133134.2870646-1-chengzhihao1@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20221130133134.2870646-1-chengzhihao1@huawei.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 30 2022 at 8:31P -0500, Zhihao Cheng wrote: > Following concurrent processes: > > P1(drop cache) P2(kworker) > drop_caches_sysctl_handler > drop_slab > shrink_slab > down_read(&shrinker_rwsem) - LOCK A > do_shrink_slab > super_cache_scan > prune_icache_sb > dispose_list > evict > ext4_evict_inode > ext4_clear_inode > ext4_discard_preallocations > ext4_mb_load_buddy_gfp > ext4_mb_init_cache > ext4_read_block_bitmap_nowait > ext4_read_bh_nowait > submit_bh > dm_submit_bio > do_worker > process_deferred_bios > commit > metadata_operation_failed > dm_pool_abort_metadata > down_write(&pmd->root_lock) - LOCK B > __destroy_persistent_data_objects > dm_block_manager_destroy > dm_bufio_client_destroy > unregister_shrinker > down_write(&shrinker_rwsem) > thin_map | > dm_thin_find_block ↓ > down_read(&pmd->root_lock) --> ABBA deadlock > > , which triggers hung task: > > [ 76.974820] INFO: task kworker/u4:3:63 blocked for more than 15 seconds. > [ 76.976019] Not tainted 6.1.0-rc4-00011-g8f17dd350364-dirty #910 > [ 76.978521] task:kworker/u4:3 state:D stack:0 pid:63 ppid:2 > [ 76.978534] Workqueue: dm-thin do_worker > [ 76.978552] Call Trace: > [ 76.978564] __schedule+0x6ba/0x10f0 > [ 76.978582] schedule+0x9d/0x1e0 > [ 76.978588] rwsem_down_write_slowpath+0x587/0xdf0 > [ 76.978600] down_write+0xec/0x110 > [ 76.978607] unregister_shrinker+0x2c/0xf0 > [ 76.978616] dm_bufio_client_destroy+0x116/0x3d0 > [ 76.978625] dm_block_manager_destroy+0x19/0x40 > [ 76.978629] __destroy_persistent_data_objects+0x5e/0x70 > [ 76.978636] dm_pool_abort_metadata+0x8e/0x100 > [ 76.978643] metadata_operation_failed+0x86/0x110 > [ 76.978649] commit+0x6a/0x230 > [ 76.978655] do_worker+0xc6e/0xd90 > [ 76.978702] process_one_work+0x269/0x630 > [ 76.978714] worker_thread+0x266/0x630 > [ 76.978730] kthread+0x151/0x1b0 > [ 76.978772] INFO: task test.sh:2646 blocked for more than 15 seconds. > [ 76.979756] Not tainted 6.1.0-rc4-00011-g8f17dd350364-dirty #910 > [ 76.982111] task:test.sh state:D stack:0 pid:2646 ppid:2459 > [ 76.982128] Call Trace: > [ 76.982139] __schedule+0x6ba/0x10f0 > [ 76.982155] schedule+0x9d/0x1e0 > [ 76.982159] rwsem_down_read_slowpath+0x4f4/0x910 > [ 76.982173] down_read+0x84/0x170 > [ 76.982177] dm_thin_find_block+0x4c/0xd0 > [ 76.982183] thin_map+0x201/0x3d0 > [ 76.982188] __map_bio+0x5b/0x350 > [ 76.982195] dm_submit_bio+0x2b6/0x930 > [ 76.982202] __submit_bio+0x123/0x2d0 > [ 76.982209] submit_bio_noacct_nocheck+0x101/0x3e0 > [ 76.982222] submit_bio_noacct+0x389/0x770 > [ 76.982227] submit_bio+0x50/0xc0 > [ 76.982232] submit_bh_wbc+0x15e/0x230 > [ 76.982238] submit_bh+0x14/0x20 > [ 76.982241] ext4_read_bh_nowait+0xc5/0x130 > [ 76.982247] ext4_read_block_bitmap_nowait+0x340/0xc60 > [ 76.982254] ext4_mb_init_cache+0x1ce/0xdc0 > [ 76.982259] ext4_mb_load_buddy_gfp+0x987/0xfa0 > [ 76.982263] ext4_discard_preallocations+0x45d/0x830 > [ 76.982274] ext4_clear_inode+0x48/0xf0 > [ 76.982280] ext4_evict_inode+0xcf/0xc70 > [ 76.982285] evict+0x119/0x2b0 > [ 76.982290] dispose_list+0x43/0xa0 > [ 76.982294] prune_icache_sb+0x64/0x90 > [ 76.982298] super_cache_scan+0x155/0x210 > [ 76.982303] do_shrink_slab+0x19e/0x4e0 > [ 76.982310] shrink_slab+0x2bd/0x450 > [ 76.982317] drop_slab+0xcc/0x1a0 > [ 76.982323] drop_caches_sysctl_handler+0xb7/0xe0 > [ 76.982327] proc_sys_call_handler+0x1bc/0x300 > [ 76.982331] proc_sys_write+0x17/0x20 > [ 76.982334] vfs_write+0x3d3/0x570 > [ 76.982342] ksys_write+0x73/0x160 > [ 76.982347] __x64_sys_write+0x1e/0x30 > [ 76.982352] do_syscall_64+0x35/0x80 > [ 76.982357] entry_SYSCALL_64_after_hwframe+0x63/0xcd > > Function metadata_operation_failed() is called when operations failed > on dm pool metadata, dm pool will destroy and recreate metadata. So, > shrinker will be unregistered and registered, which could down write > shrinker_rwsem under pmd_write_lock. > > Fix it by allocating dm_block_manager before locking pmd->root_lock > and destroying old dm_block_manager after unlocking pmd->root_lock, > then old dm_block_manager is replaced with new dm_block_manager under > pmd->root_lock. So, shrinker register/unregister could be done without > holding pmd->root_lock. > > Fetch a reproducer in [Link]. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=216676 > Fixes: e49e582965b3 ("dm thin: add read only and fail io modes") > Signed-off-by: Zhihao Cheng > --- > v1->v2: Update fix strategy. Allocating/Destroying dm_block_manager > outside of lock pmd->root. > v2->v3: Move fail_io setting inside pmd->root lock. > drivers/md/dm-thin-metadata.c | 40 +++++++++++++++++++++++++++++------ > 1 file changed, 34 insertions(+), 6 deletions(-) > > diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c > index a27395c8621f..7729372519b8 100644 > --- a/drivers/md/dm-thin-metadata.c > +++ b/drivers/md/dm-thin-metadata.c > @@ -782,7 +782,6 @@ static void __destroy_persistent_data_objects(struct dm_pool_metadata *pmd) > dm_sm_destroy(pmd->metadata_sm); > dm_tm_destroy(pmd->nb_tm); > dm_tm_destroy(pmd->tm); > - dm_block_manager_destroy(pmd->bm); > } > > static int __begin_transaction(struct dm_pool_metadata *pmd) > @@ -988,8 +987,10 @@ int dm_pool_metadata_close(struct dm_pool_metadata *pmd) > __func__, r); > } > pmd_write_unlock(pmd); > - if (!pmd->fail_io) > + if (!pmd->fail_io) { > __destroy_persistent_data_objects(pmd); > + dm_block_manager_destroy(pmd->bm); > + } > > kfree(pmd); > return 0; > @@ -1860,19 +1861,46 @@ static void __set_abort_with_changes_flags(struct dm_pool_metadata *pmd) > int dm_pool_abort_metadata(struct dm_pool_metadata *pmd) > { > int r = -EINVAL; > + struct dm_block_manager *old_bm = NULL, *new_bm = NULL; > > - pmd_write_lock(pmd); > if (pmd->fail_io) > + return -EINVAL; > + > + new_bm = dm_block_manager_create(pmd->bdev, THIN_METADATA_BLOCK_SIZE << SECTOR_SHIFT, > + THIN_MAX_CONCURRENT_LOCKS); > + > + pmd_write_lock(pmd); > + if (pmd->fail_io) { > + pmd_write_unlock(pmd); > goto out; > + } > > __set_abort_with_changes_flags(pmd); > __destroy_persistent_data_objects(pmd); > - r = __create_persistent_data_objects(pmd, false); > + old_bm = pmd->bm; > + if (IS_ERR(new_bm)) { > + /* Return back if creating dm_block_manager failed. */ > + DMERR("could not create block manager"); > + pmd->bm = NULL; > + r = PTR_ERR(new_bm); > + goto out_unlock; > + } > + > + pmd->bm = new_bm; > + r = __open_or_format_metadata(pmd, false); > + if (r) { > + pmd->bm = NULL; > + goto out_unlock; > + } > + new_bm = NULL; > +out_unlock: > if (r) > pmd->fail_io = true; > - > -out: > pmd_write_unlock(pmd); > + dm_block_manager_destroy(old_bm); > +out: > + if (new_bm && !IS_ERR(new_bm)) > + dm_block_manager_destroy(new_bm); > > return r; > } > -- > 2.31.1 > I've picked your patch up and folded into these following changes: diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c index 7729372519b8..1a62226ac34e 100644 --- a/drivers/md/dm-thin-metadata.c +++ b/drivers/md/dm-thin-metadata.c @@ -776,12 +776,15 @@ static int __create_persistent_data_objects(struct dm_pool_metadata *pmd, bool f return r; } -static void __destroy_persistent_data_objects(struct dm_pool_metadata *pmd) +static void __destroy_persistent_data_objects(struct dm_pool_metadata *pmd, + bool destroy_bm) { dm_sm_destroy(pmd->data_sm); dm_sm_destroy(pmd->metadata_sm); dm_tm_destroy(pmd->nb_tm); dm_tm_destroy(pmd->tm); + if (destroy_bm) + dm_block_manager_destroy(pmd->bm); } static int __begin_transaction(struct dm_pool_metadata *pmd) @@ -987,10 +990,8 @@ int dm_pool_metadata_close(struct dm_pool_metadata *pmd) __func__, r); } pmd_write_unlock(pmd); - if (!pmd->fail_io) { - __destroy_persistent_data_objects(pmd); - dm_block_manager_destroy(pmd->bm); - } + if (!pmd->fail_io) + __destroy_persistent_data_objects(pmd, true); kfree(pmd); return 0; @@ -1863,9 +1864,16 @@ int dm_pool_abort_metadata(struct dm_pool_metadata *pmd) int r = -EINVAL; struct dm_block_manager *old_bm = NULL, *new_bm = NULL; - if (pmd->fail_io) - return -EINVAL; + /* fail_io is double-checked with pmd->root_lock held below */ + if (unlikely(pmd->fail_io)) + return r; + /* + * Replacement block manager (new_bm) is created and old_bm destroyed outside of + * pmd root_lock to avoid ABBA deadlock that would result (due to life-cycle of + * shrinker associated with the block manager's bufio client vs pmd root_lock). + * - must take shrinker_rwsem without holding pmd->root_lock + */ new_bm = dm_block_manager_create(pmd->bdev, THIN_METADATA_BLOCK_SIZE << SECTOR_SHIFT, THIN_MAX_CONCURRENT_LOCKS); @@ -1876,11 +1884,10 @@ int dm_pool_abort_metadata(struct dm_pool_metadata *pmd) } __set_abort_with_changes_flags(pmd); - __destroy_persistent_data_objects(pmd); + __destroy_persistent_data_objects(pmd, false); old_bm = pmd->bm; if (IS_ERR(new_bm)) { - /* Return back if creating dm_block_manager failed. */ - DMERR("could not create block manager"); + DMERR("could not create block manager during abort"); pmd->bm = NULL; r = PTR_ERR(new_bm); goto out_unlock;