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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F1D0CD11DD for ; Wed, 27 Mar 2024 01:26:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B8CD6B007B; Tue, 26 Mar 2024 21:26:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 440A96B0082; Tue, 26 Mar 2024 21:26:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E1626B0083; Tue, 26 Mar 2024 21:26:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 1ABEA6B007B for ; Tue, 26 Mar 2024 21:26:15 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id DF0091402DD for ; Wed, 27 Mar 2024 01:26:14 +0000 (UTC) X-FDA: 81941078268.28.DBD22A7 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by imf19.hostedemail.com (Postfix) with ESMTP id EEA451A0007 for ; Wed, 27 Mar 2024 01:26:12 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=MBait70d; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.208.170 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711502773; h=from:from: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:dkim-signature; bh=RYZGEUhGrOB0Ufj0v9g5JNZSmjlSrrhBE0eNJdDGR9E=; b=eUSYKY+8j9GNHYIIT4Ave0Kij7Uz4GIMYZGLh7ekiRXhxCGFbFgDxzhfCsFUJ8b950L1q7 nGftpSbeaPWatdcMF3zHcGCJVKqGWtfrNrYm+d/55ymi7B64VmDj5KC0TTsakP29y5ofGy HcADCAFQMQE6XWIde3xbubsUCQqLbtc= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=MBait70d; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.208.170 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711502773; a=rsa-sha256; cv=none; b=8I3rNlG4Li31m70U9Vfzs1tl+X1atxx+9Wie1RMwmKalyceMbn4wK7KcP+IQDNBvtaDQSC WQr9vQy+8f+sWaJQm6IbdQqznx/anBvlKC1OrRrU1znnX7A7G81hZBmqdK/0pCdUYsv0wu HRQy0GoxTH6ukCGEjyX0d0vr4KBSeB8= Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2d28051376eso112016721fa.0 for ; Tue, 26 Mar 2024 18:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711502771; x=1712107571; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RYZGEUhGrOB0Ufj0v9g5JNZSmjlSrrhBE0eNJdDGR9E=; b=MBait70duP/jT0by91d6QjwAQHebuR4MGXV2mqczCYFm2QYfAVPnoU0A8dlf/zOqEQ Rz4ctroVwH6h75mzvKpCPaBVkG1bULx5AT7SDH15pt8h/IKqfOBI/T0yL4AIRK10+JU/ pHFl2psA/dmisBU6zQ/vFpWdemaduZfSmWxiqUqvswqU3+vYHDyxmJtter8Kb/JZCrxj eCq0WFTujqw6Ri+4X4wL2yzig3sdw/ISRaSffAU+bOeeLZH13CorNCOHusfxTIaGfITx 6o3WbW8hS2bNQM5fay4oYC5aF22vHzStTvAMrgF2PcEPGVGVBk7/4JkyaOTirQ01TYVE cqhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711502771; x=1712107571; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RYZGEUhGrOB0Ufj0v9g5JNZSmjlSrrhBE0eNJdDGR9E=; b=CJ+9WegELOq3MwdBRcTVthnLE9Ob19/N/6gk7lIL4TMaJSnj9souvkUenb6V639d3y YLimIhG2N1RVmJlLB9RscRxJftxFfpnGUfawbqNjPR0rWxaUH53h65cJuxq2hRzg6lGh BjYQrmP/b432MMIpCAAErKm+tkAOqpJ/mgZKJXCC2fwBLJlprRHIkOmGlox7IDb3UV6v ba3K478vLf5CoOuWRpbJmVVyiGLXr45Fx2KFB2kw0WWgQTHFisz2y/3ufhbeQU23dlux TwlKOiBz3ram/oNnV/huprcx660Uhx35tnB7lpVR36FdGpoF0X7G+W/QXStYGMgpXm0w DCaw== X-Forwarded-Encrypted: i=1; AJvYcCVCsn/1//QzpEGsQu8WzVtjWUwEUEWlRYZfDE4XmA1t/9bHoO/ngmKi8BnaruWadwe9G23vY1VHO3Kq9YPCHB94XLg= X-Gm-Message-State: AOJu0Yw90tNFYZ6ZsYJ/E1AJrBjyQL7WpF+XpWRFeaArRZJL2wexYU7B EioqhtZc4LVdi1PyPeya5GvdVD0DVkvzGbCqfCAhm4NYE5yXQDqDjU3uEuqqjZKCCQb2qGZaEd9 Xq6kTZEGFFpz7fnLWqGAoHoVEJPI= X-Google-Smtp-Source: AGHT+IF+O4i8zpoAQA7aYuTcNBW+pg4KvRZb+Abnui5XaAN9wtwyKuIDJxnHBeFHRZlOFJO74wtcAsI79petfkTvJNk= X-Received: by 2002:a2e:9c92:0:b0:2d6:f793:3434 with SMTP id x18-20020a2e9c92000000b002d6f7933434mr513418lji.2.1711502770816; Tue, 26 Mar 2024 18:26:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Zhaoyang Huang Date: Wed, 27 Mar 2024 09:25:59 +0800 Message-ID: Subject: Re: summarize all information again at bottom//reply: reply: [PATCH] mm: fix a race scenario in folio_isolate_lru To: Matthew Wilcox Cc: =?UTF-8?B?6buE5pyd6ZizIChaaGFveWFuZyBIdWFuZyk=?= , Andrew Morton , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , =?UTF-8?B?5bq357qq5ruoIChTdGV2ZSBLYW5nKQ==?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: ppkjmymghpyoozm5uh5beqq3wtpq7z8u X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: EEA451A0007 X-HE-Tag: 1711502772-252871 X-HE-Meta: U2FsdGVkX1/FYlip9pzla0Em6yN8/ubbWjgYRQTFAYtayYNjRZ0rTnjBDcTxGiaV7XqhTl5TXOXlTrSFQ+PsVsHRCgr3eRLY0EvS4KL04vKdalR9C912cTmkE6ObiMGRR7BabfffG9SNDF0/5KIwoxlxDssBJysZPPoQO2NPy1+zfbCEkOKw8qE7xjcDcB9Ar7licQB59ioo1wmKqhKY02gWGp+rnkm27qJIEgs5mSfmsYGIHSmEKmU159ysghkQU9wUPQhqLQ4BqR9YyVJquoEHcnZADtOGui8pbuHYzrxi5ZqAQvMHwwd3ALA9HtHLhqcE4aUlJKaJ8zIMh8J+9btBdcjglYfTx1aR6W6qxOy5fLzRNc38ASsfgfJFxEfGNMfrt31m5Mr++Acl0/6VcgS/zvTWcS2BrYLKYIamK0oolTqu6t1rn05rYQW0FKvV7NufU++vMdEqG/SLU2WKD0/tS+vdUE4P4j1CxLDSYm2oYuyS0PFK7CLDaXum627ZBOqGxvQPOl3eR3J9j8X44IGIfuxN9WG6bXxhO3ahdslDOQ0DT8JXrtP2PtBLHcpJMsgiOVUOYrlXjEnbgRmnv8y7NrIkPiKb/g0qOjvSXr3PI/RAkKQpZ2RDOnRvHeK+2S2BfLKJc2joCi6J6Mj5o+1ZV6noA/k0MYjuu5JkInkAYaNz+Fko3M5cv+ZQDB2hZ5vyjxhzRfF+lKxRpw4IVR9r9XKH8Y6tkyhVi2XS2Yc3ACfui7I6zgBdn3FAzcXhfCm18WBfVYr4vic+V2wK4Th44UuITbi+BeRG/AvinMb2gOfxk7RXTEvYIyk0anyImi/izqT5azyTHUEP2wO2VFiKnQwaIZlKVlCAYoK9FpsuqrjKcNuWoL87YXgHq4aI786jk1jVzM2mnoQ+3VP37h0vFSe+0JX/sXXx86TNLah6eHTOF/wZsnz36avFdamvWigDjpy0auEDs/Lz+fi fAeYd+3R yws8SrQyYj0Cn8gvj0z+sVBhvdPZ3vvI+BWEjWmVYW1Pz+NW9Z8MzPcmEiA8X3Drj6G5CmtY8iX9moSVT8rGumd0zdMzlLxDCZQ0VQOw+wa2by5bAiAeboh2rO3WHuvCUhYJqiyKWHjfUnfaembp5+181hAyLnwTLYPTyeZIOYQOYzUP89jm4crMRyGtrKC8hYQmVK3BP60ua0vNZ1ldKx9pvRW7o+t10YAVoCJRan8Zu2+FfBZiqEdHqbeCnyqucyJkDoo0nAWZbbvS7Oj8pvejoK0oofrvKXxkkEoqvxA6EDvP97NGDkKbEQiSz97lsM3cjSbcnePdnakHQ9cqojAFa/9C7yevWK4ttv/rLCz6sHpkvYPQ2SYGhCujo7UdQeZC2j5VE9C2LXdRFdB73BEpjgVOSaUxkuglwEkAQwv2wmc7KNMbZuXjn17YkBeC/zYaJqgpBQpdhXrucLVMJKP2dXGP9RKP+F5O1wbwFIMjNV3e3HXEuzuCrcw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.069890, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Mar 26, 2024 at 8:21=E2=80=AFPM Matthew Wilcox wrote: > > On Tue, Mar 26, 2024 at 05:06:55PM +0800, Zhaoyang Huang wrote: > > 1. Thread_readahead remove the folio from page cache and drop 2 refcnt > > by readahead_folio & filemap_remove_folio(get rid of the folios which > > failed to launch IO during readahead) > > refcnt =3D=3D 0, PG_lru =3D=3D true, PG_lock =3D=3D true > > read_pages > > ... > > folio =3D readahead_folio > > > > ********For the folio which can not launch IO, we should NOT drop > > refcnt here??? replaced by __readahead_folio???********** > > folio_get > > filemap_remove_folio(folio) > > folio_unlock > > > > folio_put > > Ignoring any other thread, you're basically saying that there's a > refcount imbalance here. Which means we'd hit an assert (that folio > refcount went below zero) in the normal case where another thread wasn't > simultaneously trying to do anything. Theoretically Yes but it is rare in practice as aops->readahead will launch all pages to IO under most scenarios. read_pages aops->readahead[1] ... while (folio =3D readahead_folio)[2] filemap_remove_folio IMO, according to the comments of readahead_page, the refcnt represents page cache dropped in [1] makes sense for two reasons, '1. The folio is going to do IO and is locked until IO done;2. The refcnt will be added back when found again from the page cache and then serve for PTE or vfs' while it doesn't make sense in [2] as the refcnt of page cache will be dropped in filemap_remove_folio * Context: The page is locked and has an elevated refcount. The caller * should decreases the refcount once the page has been submitted for I/O * and unlock the page once all I/O to that page has completed. * Return: A pointer to the next page, or %NULL if we are done.