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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2343C43457 for ; Thu, 8 Oct 2020 17:30:53 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 16C7A2222F for ; Thu, 8 Oct 2020 17:30:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="e6YulghK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 16C7A2222F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 7E7BF940008; Thu, 8 Oct 2020 13:30:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 799CB900002; Thu, 8 Oct 2020 13:30:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6AEAA940008; Thu, 8 Oct 2020 13:30:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0088.hostedemail.com [216.40.44.88]) by kanga.kvack.org (Postfix) with ESMTP id 32362900002 for ; Thu, 8 Oct 2020 13:30:52 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id CC607180AD80F for ; Thu, 8 Oct 2020 17:30:51 +0000 (UTC) X-FDA: 77349448302.26.hall81_580f5f2271d9 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin26.hostedemail.com (Postfix) with ESMTP id 649751804B66A for ; Thu, 8 Oct 2020 17:30:51 +0000 (UTC) X-HE-Tag: hall81_580f5f2271d9 X-Filterd-Recvd-Size: 11840 Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) by imf37.hostedemail.com (Postfix) with ESMTP for ; Thu, 8 Oct 2020 17:30:50 +0000 (UTC) Received: by mail-lf1-f66.google.com with SMTP id u8so7454106lff.1 for ; Thu, 08 Oct 2020 10:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0r6hs94To3WnkkAO44dD5WsBrttflbyFzF64gAf7oOc=; b=e6YulghKmU2zbj8oKL6vbX/nL87I35BsKkEYWcuZH7T+d/AX9OaAN3D9jG63KOw2L4 ADpXCUvcjyw+baQIDFxhMRcPcdnFPVKVLKoHXnWEEw3krz9/seeOnSrf8moXkwtHbnjh vldct/l7Bf3WG6cp0AqoGhKopct1dBy4/7QLI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0r6hs94To3WnkkAO44dD5WsBrttflbyFzF64gAf7oOc=; b=ZYrlSXexxeXnDwYtYjPUNnhN+kXCd84pWxOURuW57gi7RP+3NFG3tuODUHDyon1a8A JTIqqwYDwKfxKSzwKO2jzbbo6pS/ISAy9IrLkN7aqQUPCe5bbvf1WBWWntJk72c7QEfH XfKXmqFgwnQGBiK53wUB5WsEAIzhiMBuyV34D0pfJzlIVGuiYKrHy1lZiiPW43Ozb7hD 7G0B1/k4EJ0DXy+LMub8KbDJvJiWVqQkE4ftslzVW2eqgnSaZs0kSEqtj5O5S2MpYmYc AJoODLeBIP5YKo6vzQSHOGfgCXTJDO1toiFp7/LbBPQMKQTL5BBML7qKdWwzwnrA1bQR 5N+Q== X-Gm-Message-State: AOAM531Kp8JfBiDDizMmubsxMJbAWK4mT7XllD+t6z8oUDU3EoNapq9O urMTwiCo6LdVtsZqb0ZE9/olqqm3FgPXYg== X-Google-Smtp-Source: ABdhPJzhJggsFnD5gpTr+oUndmP6P+c4Pj67UN9dQ7EVuxt8LN4Gk48H3V3IoPwJjMZcQstj4SbV7w== X-Received: by 2002:ac2:5edb:: with SMTP id d27mr1699076lfq.404.1602178249168; Thu, 08 Oct 2020 10:30:49 -0700 (PDT) Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com. [209.85.167.51]) by smtp.gmail.com with ESMTPSA id c4sm960921lfm.294.2020.10.08.10.30.46 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 08 Oct 2020 10:30:47 -0700 (PDT) Received: by mail-lf1-f51.google.com with SMTP id d24so7422173lfa.8 for ; Thu, 08 Oct 2020 10:30:46 -0700 (PDT) X-Received: by 2002:a19:2d5:: with SMTP id 204mr1648128lfc.352.1602178246305; Thu, 08 Oct 2020 10:30:46 -0700 (PDT) MIME-Version: 1.0 References: <20201008092627.399131-1-aneesh.kumar@linux.ibm.com> In-Reply-To: From: Linus Torvalds Date: Thu, 8 Oct 2020 10:30:30 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [RFC PATCH] mm: Fetch the dirty bit before we reset the pte To: "Aneesh Kumar K.V" , Leon Romanovsky Cc: linuxppc-dev , Michael Ellerman , Nick Piggin , Peter Xu , Jason Gunthorpe , John Hubbard , Linux-MM , Linux Kernel Mailing List , Andrew Morton , Jan Kara , Michal Hocko , Kirill Shutemov , Hugh Dickins Content-Type: multipart/mixed; boundary="0000000000003d1e2b05b12c3107" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --0000000000003d1e2b05b12c3107 Content-Type: text/plain; charset="UTF-8" On Thu, Oct 8, 2020 at 10:02 AM Linus Torvalds wrote: > > Here's the first patch anyway. If you actually have a test-case where > this matters, I guess I need to apply it now.. Actually, I removed the "__page_mapcount()" part of that patch, to keep it minimal and _only_ do remove the wrprotect trick. We can do the __page_mapcount() optimization and the mm sequence count for 5.10 (although so far nobody has actually written the seqcount patch - I think it would be a trivial few-liner, but I guess it won't make 5.10 at this point). So here's what I ended up with. Linus --0000000000003d1e2b05b12c3107 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-mm-avoid-early-COW-write-protect-games-during-fork.patch" Content-Disposition: attachment; filename="0001-mm-avoid-early-COW-write-protect-games-during-fork.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kg13jquu0 RnJvbSBmM2M2NGVkYTNlNTA5N2VjMzE5OGNiMjcxZjVmNTA0ZDY1ZDY3MTMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IE1vbiwgMjggU2VwIDIwMjAgMTI6NTA6MDMgLTA3MDAKU3ViamVjdDog W1BBVENIXSBtbTogYXZvaWQgZWFybHkgQ09XIHdyaXRlIHByb3RlY3QgZ2FtZXMgZHVyaW5nIGZv cmsoKQoKSW4gY29tbWl0IDcwZTgwNmU0ZTY0NSAoIm1tOiBEbyBlYXJseSBjb3cgZm9yIHBpbm5l ZCBwYWdlcyBkdXJpbmcgZm9yaygpCmZvciBwdGVzIikgd2Ugd3JpdGUtcHJvdGVjdGVkIHRoZSBQ VEUgYmVmb3JlIGRvaW5nIHRoZSBwYWdlIHBpbm5pbmcKY2hlY2ssIGluIG9yZGVyIHRvIGF2b2lk IGEgcmFjZSB3aXRoIGNvbmN1cnJlbnQgZmFzdC1HVVAgcGlubmluZyAod2hpY2gKZG9lc24ndCB0 YWtlIHRoZSBtbSBzZW1hcGhvcmUgb3IgdGhlIHBhZ2UgdGFibGUgbG9jaykuCgpUaGF0IHRyaWNr IGRvZXNuJ3QgYWN0dWFsbHkgd29yayAtIGl0IGRvZXNuJ3QgaGFuZGxlIG1lbW9yeSBvcmRlcmlu Zwpwcm9wZXJseSwgYW5kIGRvaW5nIHNvIHdvdWxkIGJlIHByb2hpYml0aXZlbHkgZXhwZW5zaXZl LgoKSXQgYWxzbyBpc24ndCByZWFsbHkgbmVlZGVkLiAgV2hpbGUgd2UncmUgbW92aW5nIGluIHRo ZSBkaXJlY3Rpb24gb2YKYWxsb3dpbmcgYW5kIHN1cHBvcnRpbmcgcGFnZSBwaW5uaW5nIHdpdGhv dXQgbWFya2luZyB0aGUgcGlubmVkIGFyZWEKd2l0aCBNQURWX0RPTlRGT1JLLCB0aGUgZmFjdCBp cyB0aGF0IHdlJ3ZlIG5ldmVyIHJlYWxseSBzdXBwb3J0ZWQgdGhpcwpraW5kIG9mIG9kZCAiY29u Y3VycmVudCBmb3JrKCkgYW5kIHBhZ2UgcGlubmluZyIsIGFuZCBkb2luZyB0aGUKc2VyaWFsaXph dGlvbiBvbiBhIHB0ZSBsZXZlbCBpcyBqdXN0IHdyb25nLgoKV2UgY2FuIGFkZCBzZXJpYWxpemF0 aW9uIHdpdGggYSBwZXItbW0gc2VxdWVuY2UgY291bnRlciwgc28gd2Uga25vdyBob3cKdG8gc29s dmUgdGhhdCByYWNlIHByb3Blcmx5LCBidXQgd2UnbGwgZG8gdGhhdCBhdCBhIG1vcmUgYXBwcm9w cmlhdGUKdGltZS4gIFJpZ2h0IG5vdyB0aGlzIGp1c3QgcmVtb3ZlcyB0aGUgd3JpdGUgcHJvdGVj dCBnYW1lcy4KCkl0IGFsc28gdHVybnMgb3V0IHRoYXQgdGhlIHdyaXRlIHByb3RlY3QgZ2FtZXMg YWN0dWFsbHkgYnJlYWsgb24gUG93ZXIsCmFzIHJlcG9ydGVkIGJ5IEFuZWVzaCBLdW1hcjoKCiAi QXJjaGl0ZWN0dXJlIGxpa2UgcHBjNjQgZXhwZWN0cyBzZXRfcHRlX2F0IHRvIGJlIG5vdCB1c2Vk IGZvciB1cGRhdGluZwogIGEgdmFsaWQgcHRlLiBUaGlzIGlzIGZ1cnRoZXIgZXhwbGFpbmVkIGlu IGNvbW1pdCA1NmVlY2RiOTEyYjUgKCJtbToKICBVc2UgcHRlcC9wbWRwX3NldF9udW1hKCkgZm9y IHVwZGF0aW5nIF9QQUdFX05VTUEgYml0IikiCgphbmQgdGhlIGNvZGUgdHJpZ2dlcmVkIGEgd2Fy bmluZyB0aGVyZToKCiAgV0FSTklORzogQ1BVOiAwIFBJRDogMzA2MTMgYXQgYXJjaC9wb3dlcnBj L21tL3BndGFibGUuYzoxODUgc2V0X3B0ZV9hdCsweDJhOC8weDNhMCBhcmNoL3Bvd2VycGMvbW0v cGd0YWJsZS5jOjE4NQogIENhbGwgVHJhY2U6CiAgICBjb3B5X3ByZXNlbnRfcGFnZSBtbS9tZW1v cnkuYzo4NTcgW2lubGluZV0KICAgIGNvcHlfcHJlc2VudF9wdGUgbW0vbWVtb3J5LmM6ODk5IFtp bmxpbmVdCiAgICBjb3B5X3B0ZV9yYW5nZSBtbS9tZW1vcnkuYzoxMDE0IFtpbmxpbmVdCiAgICBj b3B5X3BtZF9yYW5nZSBtbS9tZW1vcnkuYzoxMDkyIFtpbmxpbmVdCiAgICBjb3B5X3B1ZF9yYW5n ZSBtbS9tZW1vcnkuYzoxMTI3IFtpbmxpbmVdCiAgICBjb3B5X3A0ZF9yYW5nZSBtbS9tZW1vcnku YzoxMTUwIFtpbmxpbmVdCiAgICBjb3B5X3BhZ2VfcmFuZ2UrMHgxZjZjLzB4MmNjMCBtbS9tZW1v cnkuYzoxMjEyCiAgICBkdXBfbW1hcCBrZXJuZWwvZm9yay5jOjU5MiBbaW5saW5lXQogICAgZHVw X21tKzB4NzdjLzB4YWIwIGtlcm5lbC9mb3JrLmM6MTM1NQogICAgY29weV9tbSBrZXJuZWwvZm9y ay5jOjE0MTEgW2lubGluZV0KICAgIGNvcHlfcHJvY2VzcysweDFmMDAvMHgyNzQwIGtlcm5lbC9m b3JrLmM6MjA3MAogICAgX2RvX2ZvcmsrMHhjNC8weDEwYjAga2VybmVsL2ZvcmsuYzoyNDI5CgpM aW5rOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sL0NBSGstPXdpV3IrZ08wUm80THZuSkJN czkwT2llUE55ckUzRStwSnZjOVB6ZEJTaGRtd0BtYWlsLmdtYWlsLmNvbS8KTGluazogaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGludXhwcGMtZGV2LzIwMjAxMDA4MDkyNTQxLjM5ODA3OS0xLWFu ZWVzaC5rdW1hckBsaW51eC5pYm0uY29tLwpSZXBvcnRlZC1ieTogQW5lZXNoIEt1bWFyIEsuViA8 YW5lZXNoLmt1bWFyQGxpbnV4LmlibS5jb20+ClRlc3RlZC1ieTogTGVvbiBSb21hbm92c2t5IDxs ZW9ucm9AbnZpZGlhLmNvbT4KQ2M6IFBldGVyIFh1IDxwZXRlcnhAcmVkaGF0LmNvbT4KQ2M6IEph c29uIEd1bnRob3JwZSA8amdnQHppZXBlLmNhPgpDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBu dmlkaWEuY29tPgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4K Q2M6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CkNjOiBNaWNoYWwgSG9ja28gPG1ob2Nrb0BzdXNl LmNvbT4KQ2M6IEtpcmlsbCBTaHV0ZW1vdiA8a2lyaWxsQHNodXRlbW92Lm5hbWU+CkNjOiBIdWdo IERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZhbGRz IDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KLS0tCiBtbS9tZW1vcnkuYyB8IDQxICsr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tbS9tZW1vcnku YyBiL21tL21lbW9yeS5jCmluZGV4IGZjZmM0Y2EzNmViYS4uZWVhZTU5MGU1MjZhIDEwMDY0NAot LS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAtODA2LDggKzgwNiw2IEBAIGNv cHlfcHJlc2VudF9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdF9tbSwgc3RydWN0IG1tX3N0cnVj dCAqc3JjX21tLAogCQlyZXR1cm4gMTsKIAogCS8qCi0JICogVGhlIHRyaWNrIHN0YXJ0cy4KLQkg KgogCSAqIFdoYXQgd2Ugd2FudCB0byBkbyBpcyB0byBjaGVjayB3aGV0aGVyIHRoaXMgcGFnZSBt YXkKIAkgKiBoYXZlIGJlZW4gcGlubmVkIGJ5IHRoZSBwYXJlbnQgcHJvY2Vzcy4gIElmIHNvLAog CSAqIGluc3RlYWQgb2Ygd3Jwcm90ZWN0IHRoZSBwdGUgb24gYm90aCBzaWRlcywgd2UgY29weQpA QCAtODE1LDQ3ICs4MTMsMTYgQEAgY29weV9wcmVzZW50X3BhZ2Uoc3RydWN0IG1tX3N0cnVjdCAq ZHN0X21tLCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmNfbW0sCiAJICogdGhlIHBpbm5lZCBwYWdlIHdv bid0IGJlIHJhbmRvbWx5IHJlcGxhY2VkIGluIHRoZQogCSAqIGZ1dHVyZS4KIAkgKgotCSAqIFRv IGFjaGlldmUgdGhpcywgd2UgZG8gdGhlIGZvbGxvd2luZzoKLQkgKgotCSAqIDEuIFdyaXRlLXBy b3RlY3QgdGhlIHB0ZSBpZiBpdCdzIHdyaXRhYmxlLiAgVGhpcyBpcwotCSAqICAgIHRvIHByb3Rl Y3QgY29uY3VycmVudCB3cml0ZSBmYXN0LWd1cCB3aXRoCi0JICogICAgRk9MTF9QSU4sIHNvIHRo YXQgd2UnbGwgZmFpbCB0aGUgZmFzdC1ndXAgd2l0aAotCSAqICAgIHRoZSB3cml0ZSBiaXQgcmVt b3ZlZC4KLQkgKgotCSAqIDIuIENoZWNrIHBhZ2VfbWF5YmVfZG1hX3Bpbm5lZCgpIHRvIHNlZSB3 aGV0aGVyIHRoaXMKLQkgKiAgICBwYWdlIG1heSBoYXZlIGJlZW4gcGlubmVkLgotCSAqCi0JICog VGhlIG9yZGVyIG9mIHRoZXNlIHN0ZXBzIGlzIGltcG9ydGFudCB0byBzZXJpYWxpemUKLQkgKiBh Z2FpbnN0IHRoZSBmYXN0LWd1cCBjb2RlIChndXBfcHRlX3JhbmdlKCkpIG9uIHRoZQotCSAqIHB0 ZSBjaGVjayBhbmQgdHJ5X2dyYWJfY29tcG91bmRfaGVhZCgpLCBzbyB0aGF0Ci0JICogd2UnbGwg bWFrZSBzdXJlIGVpdGhlciB3ZSdsbCBjYXB0dXJlIHRoYXQgZmFzdC1ndXAKLQkgKiBzbyB3ZSds bCBjb3B5IHRoZSBwaW5uZWQgcGFnZSBoZXJlLCBvciB3ZSdsbCBmYWlsCi0JICogdGhhdCBmYXN0 LWd1cC4KLQkgKgotCSAqIE5PVEUhIEV2ZW4gaWYgd2UgZG9uJ3QgZW5kIHVwIGNvcHlpbmcgdGhl IHBhZ2UsCi0JICogd2Ugd29uJ3QgdW5kbyB0aGlzIHdycHJvdGVjdCgpLCBiZWNhdXNlIHRoZSBu b3JtYWwKLQkgKiByZWZlcmVuY2UgY29weSB3aWxsIG5lZWQgaXQgYW55d2F5LgotCSAqLwotCWlm IChwdGVfd3JpdGUocHRlKSkKLQkJcHRlcF9zZXRfd3Jwcm90ZWN0KHNyY19tbSwgYWRkciwgc3Jj X3B0ZSk7Ci0KLQkvKgotCSAqIFRoZXNlIGFyZSB0aGUgIm5vcm1hbGx5IHdlIGNhbiBqdXN0IGNv cHkgYnkgcmVmZXJlbmNlIgotCSAqIGNoZWNrcy4KKwkgKiBUaGUgcGFnZSBwaW5uaW5nIGNoZWNr cyBhcmUganVzdCAiaGFzIHRoaXMgbW0gZXZlcgorCSAqIHNlZW4gcGlubmluZyIsIGFsb25nIHdp dGggdGhlIChpbmV4YWN0KSBjaGVjayBvZgorCSAqIHRoZSBwYWdlIGNvdW50LiBUaGF0IG1pZ2h0 IGdpdmUgZmFsc2UgcG9zaXRpdmVzIGZvcgorCSAqIGZvciBwaW5uaW5nLCBidXQgaXQgd2lsbCB3 b3JrIGNvcnJlY3RseS4KIAkgKi8KIAlpZiAobGlrZWx5KCFhdG9taWNfcmVhZCgmc3JjX21tLT5o YXNfcGlubmVkKSkpCiAJCXJldHVybiAxOwogCWlmIChsaWtlbHkoIXBhZ2VfbWF5YmVfZG1hX3Bp bm5lZChwYWdlKSkpCiAJCXJldHVybiAxOwogCi0JLyoKLQkgKiBVaGh1aC4gSXQgbG9va3MgbGlr ZSB0aGUgcGFnZSBtaWdodCBiZSBhIHBpbm5lZCBwYWdlLAotCSAqIGFuZCB3ZSBhY3R1YWxseSBu ZWVkIHRvIGNvcHkgaXQuIE5vdyB3ZSBjYW4gc2V0IHRoZQotCSAqIHNvdXJjZSBwdGUgYmFjayB0 byBiZWluZyB3cml0YWJsZS4KLQkgKi8KLQlpZiAocHRlX3dyaXRlKHB0ZSkpCi0JCXNldF9wdGVf YXQoc3JjX21tLCBhZGRyLCBzcmNfcHRlLCBwdGUpOwotCiAJbmV3X3BhZ2UgPSAqcHJlYWxsb2M7 CiAJaWYgKCFuZXdfcGFnZSkKIAkJcmV0dXJuIC1FQUdBSU47Ci0tIAoyLjI4LjAuMjE4LmdjMTJl ZjNkMzQ5Cgo= --0000000000003d1e2b05b12c3107--