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 lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (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 BF325F327C8 for ; Tue, 21 Apr 2026 08:45:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Subject:In-Reply-To:From:References:To:MIME-Version:Date:Message-ID:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=KgjoE5NHXfQeqAcVDepUFFljTQekWLzHVKAYm+Yn+0w=; b=My6joWNWJa5SX76v4nYNamFIWh NT0ttsN1HmM8M2x3VYYDrA7+aVva8rmyjyGBpwnBRfUUpi7RwfrxmPWZHpVeG4VGamlSQfQe6gl6C 0jmPgQLOE7TxEX5BylB0/i9UXjX9Li7jUWb7pJIu1EpDtuxGGz0VVp6rr7+xJflKGi+Q=; Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1wF6jK-0000G4-6C; Tue, 21 Apr 2026 08:45:11 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1wF6jE-0000Dm-KY for linux-f2fs-devel@lists.sourceforge.net; Tue, 21 Apr 2026 08:45:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=E2sUUyzl/czcG49TlhncKVUKZFEb4ZnT0W3kUUQuXsU=; b=YqgzH8WfLHy9jKJsoyZiTs4OWQ no5yxBRi9cuAn5x9BgYwBHPQ7CHny5m1t5igTeWPflEyA/y5qJwP9KyrNaMOPcFuFTpLY86gQofrs wQLxU26FWiKgQdb13YaIdPYw/KBxz6qJjmH5WyJVxRyKiSFVRywLvf3ETDdLm5yZKqdQ=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=E2sUUyzl/czcG49TlhncKVUKZFEb4ZnT0W3kUUQuXsU=; b=lZsjTXat3o2tXvzsV58H3muNHO 7fWCDZfbZ1kBN1xlWEIoYWiF9IwW2CaHmogFUMRYQIrOG4MEbCqb6ZGWIWcvjXSPWbteF65wzmrwZ sU1YLVCRkvHY0MsDYImpYV9XSIrHBIhPdFp5INChYbLaVrw3BHOxk77nkDJziwUQiYa8=; Received: from r3-19.sinamail.sina.com.cn ([202.108.3.19]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1wF6jA-0005dW-M7 for linux-f2fs-devel@lists.sourceforge.net; Tue, 21 Apr 2026 08:45:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sina.com; s=201208; t=1776761104; bh=E2sUUyzl/czcG49TlhncKVUKZFEb4ZnT0W3kUUQuXsU=; h=Message-ID:Date:Subject:From; b=CmWYlgz0lKb7PVT4daksKQqNr3aK3y0gXLzGM7a7rewGvpZu3+lfuvxIz6DqpSSsm qamr4QM+UzRPLo7OcX40aDiKL5luvjySuJip1EBgc9CQgtnZGyPs3iHS0W02EWVPdZ dZT1VSnegosvIYmp/6t85BwwWj2zcNKiXguCG+8c= X-SMAIL-HELO: [10.189.138.37] Received: from unknown (HELO [10.189.138.37])([114.247.175.249]) by sina.com (10.54.253.32) with ESMTP id 69E7390000004791; Tue, 21 Apr 2026 16:44:49 +0800 (CST) X-Sender: monty_pavel@sina.com X-Auth-ID: monty_pavel@sina.com Authentication-Results: sina.com; spf=none smtp.mailfrom=monty_pavel@sina.com; dkim=none header.i=none; dmarc=none action=none header.from=monty_pavel@sina.com X-SMAIL-MID: 7061554456623 X-SMAIL-UIID: 363ED1C54E7D49C7898FF01356C99AC9-20260421-164449-1 Message-ID: <252cb446-e313-417b-b780-85dcdcf34a87@sina.com> Date: Tue, 21 Apr 2026 16:44:47 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Chao Yu , Jaegeuk Kim References: <20260403144015.221811-3-monty_pavel@sina.com> <5c222edf-6888-4007-9240-9e7988b2dc71@sina.com> Content-Language: en-US From: Yongpeng Yang In-Reply-To: X-Headers-End: 1wF6jA-0005dW-M7 Subject: Re: [f2fs-dev] [PATCH] f2fs: fix node_cnt race between extent node destroy and writeback X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Yongpeng Yang , stable@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net Ck9uIDQvMjAvMjYgMTU6MjgsIENoYW8gWXUgdmlhIExpbnV4LWYyZnMtZGV2ZWwgd3JvdGU6Cj4g T24gNC8xOS8yMDI2IDEyOjI5IEFNLCBZb25ncGVuZyBZYW5nIHdyb3RlOgo+Pgo+PiBPbiA0LzE4 LzI2IDg6NTEgQU0sIENoYW8gWXUgdmlhIExpbnV4LWYyZnMtZGV2ZWwgd3JvdGU6Cj4+PiBPbiA0 LzE3LzI2IDIxOjI2LCBZb25ncGVuZyBZYW5nIHdyb3RlOgo+Pj4+Cj4+Pj4gT24gNC8xNy8yNiAx NzowMCwgQ2hhbyBZdSB2aWEgTGludXgtZjJmcy1kZXZlbCB3cm90ZToKPj4+Pj4gT24gNC8zLzI2 IDIyOjQwLCBZb25ncGVuZyBZYW5nIHdyb3RlOgo+Pj4+Pj4gRnJvbTogWW9uZ3BlbmcgWWFuZyA8 eWFuZ3lvbmdwZW5nQHhpYW9taS5jb20+Cj4+Pj4+Pgo+Pj4+Pj4gZjJmc19kZXN0cm95X2V4dGVu dF9ub2RlKCkgZG9lcyBub3Qgc2V0IEZJX05PX0VYVEVOVCBiZWZvcmUgY2xlYXJpbmcKPj4+Pj4+ IGV4dGVudCBub2Rlcy4gV2hlbiBjYWxsZWQgZnJvbSBmMmZzX2Ryb3BfaW5vZGUoKSB3aXRoIElf U1lOQyBzZXQsCj4+Pj4+PiBjb25jdXJyZW50IGt3b3JrZXIgd3JpdGViYWNrIGNhbiBpbnNlcnQg bmV3IGV4dGVudCBub2RlcyBpbnRvIHRoZQo+Pj4+Pj4gc2FtZQo+Pj4+Pj4gZXh0ZW50IHRyZWUs IHJhY2luZyB3aXRoIHRoZSBkZXN0cm95IGFuZCB0cmlnZ2VyaW5nIGYyZnNfYnVnX29uKCkgaW4K Pj4+Pj4+IF9fZGVzdHJveV9leHRlbnRfbm9kZSgpLiBUaGUgc2NlbmFyaW8gaXMgYXMgZm9sbG93 czoKPj4+Pj4+Cj4+Pj4+PiBkcm9wIGlub2RlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlYmFjawo+Pj4+Pj4gwqDCoMKgIC0gaXB1dAo+ Pj4+Pj4gwqDCoMKgwqAgLSBmMmZzX2Ryb3BfaW5vZGXCoCAvLyBJX1NZTkMgc2V0Cj4+Pj4+PiDC oMKgwqDCoMKgIC0gZjJmc19kZXN0cm95X2V4dGVudF9ub2RlCj4+Pj4+PiDCoMKgwqDCoMKgwqAg LSBfX2Rlc3Ryb3lfZXh0ZW50X25vZGUKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIC0gd2hpbGUgKG5v ZGVfY250KSB7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZV9sb2NrKCZldC0+bG9j aykKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnJlZV9leHRlbnRfdHJlZQo+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVfdW5sb2NrKCZldC0+bG9jaykKPj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLSBfX3dyaXRlYmFja19zaW5nbGVfaW5vZGUKPj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtIGYyZnNfb3V0cGxhY2Vfd3JpdGVfZGF0YQo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4gZjJmc191cGRhdGVfcmVh ZF9leHRlbnRfY2FjaGUKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+ Pj4+Pj4gX191cGRhdGVfZXh0ZW50X3RyZWVfcmFuZ2UKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvLyBGSV9OT19FWFRFTlQgbm90Cj4+Pj4+PiBzZXQsCj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gaW5zZXJ0IG5ldyBleHRlbnQKPj4+ Pj4+IG5vZGUKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9IC8vIG5vZGVfY250ID09IDAsIGV4 aXQgd2hpbGUKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIC0gZjJmc19idWdfb24obm9kZV9jbnQpwqAg Ly8gbm9kZV9jbnQgPiAwCj4+Pj4+Pgo+Pj4+Pj4gQWRkaXRpb25hbGx5LCBfX3VwZGF0ZV9leHRl bnRfdHJlZV9yYW5nZSgpIG9ubHkgY2hlY2tzCj4+Pj4+PiBGSV9OT19FWFRFTlQgZm9yCj4+Pj4+ PiBFWF9SRUFEIHR5cGUsIGxlYXZpbmcgRVhfQkxPQ0tfQUdFIHVwZGF0ZXMgY29tcGxldGVseSB1 bnByb3RlY3RlZC4KPj4+Pj4+Cj4+Pj4+PiBUaGlzIHBhdGNoIHNldCBGSV9OT19FWFRFTlQgdW5k ZXIgZXQtPmxvY2sgaW4KPj4+Pj4+IF9fZGVzdHJveV9leHRlbnRfbm9kZSgpLAo+Pj4+Pj4gY29u c2lzdGVudCB3aXRoIG90aGVyIGNhbGxlcnMgKF9fdXBkYXRlX2V4dGVudF90cmVlX3JhbmdlIGFu ZAo+Pj4+Pj4gX19kcm9wX2V4dGVudF90cmVlKSBhbmQgY2hlY2sgRklfTk9fRVhURU5UIGZvciBi b3RoIEVYX1JFQUQgYW5kCj4+Pj4+PiBFWF9CTE9DS19BR0UgdHJlZS4KPj4+Pj4KPj4+Pj4gSSBz dWZmZXJlZCBiZWxvdyB0ZXN0IGZhaWx1cmUsIHRoZW4gSSBiaXNlY3QgdG8gdGhpcyBjaGFuZ2Uu Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqAgZ2VuZXJpYy80NzXCoCA4NHMgLi4uIFtmYWlsZWQsIGV4 aXQgc3RhdHVzIDFdLSBvdXRwdXQgbWlzbWF0Y2gKPj4+Pj4gKHNlZSAvCj4+Pj4+IHNoYXJlL2dp dC9mc3Rlc3RzL3Jlc3VsdHMvL2dlbmVyaWMvNDc1Lm91dC5iYWQpCj4+Pj4+IMKgwqDCoMKgwqAg LS0tIHRlc3RzL2dlbmVyaWMvNDc1Lm91dMKgwqAgMjAyNS0wMS0xMiAyMTo1Nzo0MC4yNzk0NDA2 NjQgKzA4MDAKPj4+Pj4gwqDCoMKgwqDCoCArKysgL3NoYXJlL2dpdC9mc3Rlc3RzL3Jlc3VsdHMv L2dlbmVyaWMvNDc1Lm91dC5iYWQgMjAyNi0wNC0xNwo+Pj4+PiAxMjowODoyOC4wMDAwMDAwMDAg KzA4MDAKPj4+Pj4gwqDCoMKgwqDCoCBAQCAtMSwyICsxLDYgQEAKPj4+Pj4gwqDCoMKgwqDCoMKg IFFBIG91dHB1dCBjcmVhdGVkIGJ5IDQ3NQo+Pj4+PiDCoMKgwqDCoMKgwqAgU2lsZW5jZSBpcyBn b2xkZW4uCj4+Pj4+IMKgwqDCoMKgwqAgK21vdW50OiAvbW50L3NjcmF0Y2hfZjJmczogbW91bnQg c3lzdGVtIGNhbGwgZmFpbGVkOiBTdHJ1Y3R1cmUKPj4+Pj4gbmVlZHMKPj4+Pj4gY2xlYW5pbmcu Cj4+Pj4+IMKgwqDCoMKgwqAgK8KgwqDCoMKgwqDCoCBkbWVzZygxKSBtYXkgaGF2ZSBtb3JlIGlu Zm9ybWF0aW9uIGFmdGVyIGZhaWxlZCBtb3VudAo+Pj4+PiBzeXN0ZW0KPj4+Pj4gY2FsbC4KPj4+ Pj4gwqDCoMKgwqDCoCArbW91bnQgZmFpbGVkCj4+Pj4+IMKgwqDCoMKgwqAgKyhzZWUgL3NoYXJl L2dpdC9mc3Rlc3RzL3Jlc3VsdHMvL2dlbmVyaWMvNDc1LmZ1bGwgZm9yIGRldGFpbHMpCj4+Pj4+ IMKgwqDCoMKgwqAgLi4uCj4+Pj4+IMKgwqDCoMKgwqAgKFJ1biAnZGlmZiAtdSAvc2hhcmUvZ2l0 L2ZzdGVzdHMvdGVzdHMvZ2VuZXJpYy80NzUub3V0IC8KPj4+Pj4gc2hhcmUvZ2l0Lwo+Pj4+PiBm c3Rlc3RzL3Jlc3VsdHMvL2dlbmVyaWMvNDc1Lm91dC5iYWQnwqAgdG8gc2VlIHRoZSBlbnRpcmUg ZGlmZikKPj4+Pj4KPj4+Pj4KPj4+Pj4gwqDCoMKgwqDCoCBnZW5lcmljLzM4OMKgIDczcyAuLi4g W2ZhaWxlZCwgZXhpdCBzdGF0dXMgMV0tIG91dHB1dCBtaXNtYXRjaAo+Pj4+PiAoc2VlIC8KPj4+ Pj4gc2hhcmUvZ2l0L2ZzdGVzdHMvcmVzdWx0cy8vZ2VuZXJpYy8zODgub3V0LmJhZCkKPj4+Pj4g wqDCoMKgwqDCoCAtLS0gdGVzdHMvZ2VuZXJpYy8zODgub3V0wqDCoCAyMDI1LTAxLTEyIDIxOjU3 OjQwLjI3NTQ0MDYwMiArMDgwMAo+Pj4+PiDCoMKgwqDCoMKgICsrKyAvc2hhcmUvZ2l0L2ZzdGVz dHMvcmVzdWx0cy8vZ2VuZXJpYy8zODgub3V0LmJhZCAyMDI2LTA0LTE3Cj4+Pj4+IDExOjU4OjA1 LjAwMDAwMDAwMCArMDgwMAo+Pj4+PiDCoMKgwqDCoMKgIEBAIC0xLDIgKzEsNiBAQAo+Pj4+PiDC oMKgwqDCoMKgwqAgUUEgb3V0cHV0IGNyZWF0ZWQgYnkgMzg4Cj4+Pj4+IMKgwqDCoMKgwqDCoCBT aWxlbmNlIGlzIGdvbGRlbi4KPj4+Pj4gwqDCoMKgwqDCoCArbW91bnQ6IC9tbnQvc2NyYXRjaF9m MmZzOiBtb3VudCBzeXN0ZW0gY2FsbCBmYWlsZWQ6IFN0cnVjdHVyZQo+Pj4+PiBuZWVkcwo+Pj4+ PiBjbGVhbmluZy4KPj4+Pj4gwqDCoMKgwqDCoCArwqDCoMKgwqDCoMKgIGRtZXNnKDEpIG1heSBo YXZlIG1vcmUgaW5mb3JtYXRpb24gYWZ0ZXIgZmFpbGVkIG1vdW50Cj4+Pj4+IHN5c3RlbQo+Pj4+ PiBjYWxsLgo+Pj4+PiDCoMKgwqDCoMKgICtjeWNsZSBtb3VudCBmYWlsZWQKPj4+Pj4gwqDCoMKg wqDCoCArKHNlZSAvc2hhcmUvZ2l0L2ZzdGVzdHMvcmVzdWx0cy8vZ2VuZXJpYy8zODguZnVsbCBm b3IgZGV0YWlscykKPj4+Pj4gwqDCoMKgwqDCoCAuLi4KPj4+Pj4gwqDCoMKgwqDCoCAoUnVuICdk aWZmIC11IC9zaGFyZS9naXQvZnN0ZXN0cy90ZXN0cy9nZW5lcmljLzM4OC5vdXQgLwo+Pj4+PiBz aGFyZS9naXQvCj4+Pj4+IGZzdGVzdHMvcmVzdWx0cy8vZ2VuZXJpYy8zODgub3V0LmJhZCfCoCB0 byBzZWUgdGhlIGVudGlyZSBkaWZmKQo+Pj4+Pgo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoMKgIEYyRlMt ZnMgKGRtLTApOiBzYW5pdHlfY2hlY2tfZXh0ZW50X2NhY2hlOiBpbm9kZSAoaW5vPTE3NjEpCj4+ Pj4+IGV4dGVudAo+Pj4+PiBpbmZvIFsyMjAwNTcsIDU3LCA2XSBpcyBpbmNvcnJlY3QsIHJ1biBm c2NrIHRvIGZpeAo+Pj4+Pgo+Pj4+PiBJIHN1c3BlY3Qgd2UgbWF5IG1pc3MgYW55IGV4dGVudCB1 cGRhdGVzIGFmdGVyIHdlIHNldCBGSV9OT19FWFRFTlQgaW4KPj4+Pj4gX19kZXN0cm95X2V4dGVu dF9ub2RlKCksIHJlc3VsdCBpbiBmYWlsaW5nIGluCj4+Pj4+IHNhbml0eV9jaGVja19leHRlbnRf Y2FjaGUoKS4KPj4+Pj4KPj4+Pj4gQ2FuIHdlIGp1c3QgcmVsb2NhdGUgZjJmc19idWdfb24obm9k ZV9jbnQpIHJhdGhlciB0aGFuIGNvbXBsaWNhdGVkCj4+Pj4+IGNoYW5nZT8KPj4+Pj4gVGhvdWdo dHM/Cj4+Pj4KPj4+PiBPaCwgSSBvdmVybG9va2VkIGxhcmdlc3QgZXh0ZW50LiBIb3cgYWJvdXQg cmVsb2NhdGUKPj4+PiBmMmZzX2J1Z19vbihub2RlX2NudCkgdG8gX19kZXN0cm95X2V4dGVudF90 cmVlPwo+Pj4+Cj4+Pj4gc3RhdGljIHZvaWQgX19kZXN0cm95X2V4dGVudF90cmVlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGVudW0gZXh0ZW50X3R5cGUKPj4+PiB0eXBlKQo+Pj4+Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIC8qIGZyZWUgYWxsIGV4dGVudCBpbmZvIGJlbG9uZyB0byB0aGlzIGV4dGVu dCB0cmVlICovCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIG5vZGVfY250ID0gX19kZXN0cm95X2V4 dGVudF9ub2RlKGlub2RlLCB0eXBlKTsKPj4+PiArwqDCoMKgwqDCoMKgIGYyZnNfYnVnX29uKHNi aSwgYXRvbWljX3JlYWQoJmV0LT5ub2RlX2NudCkpOwo+Pj4KPj4+IMKgIMKgwqDCoMKgLyogZnJl ZSBhbGwgZXh0ZW50IGluZm8gYmVsb25nIHRvIHRoaXMgZXh0ZW50IHRyZWUgKi8KPj4+IMKgIMKg wqDCoMKgbm9kZV9jbnQgPSBfX2Rlc3Ryb3lfZXh0ZW50X25vZGUoaW5vZGUsIHR5cGUpOwo+Pj4K Pj4+IMKgIMKgwqDCoMKgLyogZGVsZXRlIGV4dGVudCB0cmVlIGVudHJ5IGluIHJhZGl4IHRyZWUg Ki8KPj4+IMKgIMKgwqDCoMKgbXV0ZXhfbG9jaygmZXRpLT5leHRlbnRfdHJlZV9sb2NrKTsKPj4+ IMKgIMKgwqDCoMKgZjJmc19idWdfb24oc2JpLCBhdG9taWNfcmVhZCgmZXQtPm5vZGVfY250KSk7 wqAgPC0tLQo+Pj4KPj4+IE9oLCBpdCBoYXMgYWxyZWFkeSBjaGVja2VkIG5vZGVfY250LCBzbywg bWF5YmUgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoZQo+Pj4gY2hlY2sgaW4KPj4+IF9fZGVzdHJveV9l eHRlbnRfbm9kZSgpPwo+Pgo+PiBZZXMuIEJUVywgaXMgaXQgY29ycmVjdCB0byByZW1vdmUgdGhl IGNhbGwgdG8gZjJmc19kZXN0cm95X2V4dGVudF9ub2RlKCkKPj4gaW4gZjJmc19kcm9wX2lub2Rl KCk/IEl0IHNlZW1zIHRoaXMgY2FsbCBpcyB1bm5lY2Vzc2FyeSwgc2luY2UKPj4gZjJmc19ldmlj dF9pbm9kZSgpIHdpbGwgZXZlbnR1YWxseSBkZWxldGUgYWxsIGV4dGVudCBub2RlcyBwcm9wZXJs eS4KPiAKPiBJIHRoaW5rIGl0J3MgZmluZSB0byBrZWVwIGl0IGFjY29yZGluZyB0byBvcmlnaW5h bCBpbnRlbnRpb24gImRlc3Ryb3kKPiBleHRlbnRfdHJlZSBmb3IgdGhlIHRydW5jYXRpb24gY2Fz ZSIgaW50cm9kdWNlZCBmcm9tIDNlNzJmNzIxMzkwZAo+ICgiZjJmczogdXNlIGV4dGVudF9jYWNo ZSBieSBkZWZhdWx0IikuIEl0IGhlbHBzIHRoZSBwZXJmb3JtYW5jZSB3Lwo+IGluIGJhdGNoIGV4 dGVudCBub2RlIHJlbGVhc2UuCgpPaCwgSSBzZWUuIFRoaXMgcGF0Y2ggaGFzIGFscmVhZHkgYmVl biBtZXJnZWQgaW50byB0aGUgZGV2IGJyYW5jaC4gV2hpY2gKb2YgdGhlIGZvbGxvd2luZyBhcHBy b2FjaGVzIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGU/CjEuIERyb3AgdGhlIGN1cnJlbnQgcGF0 Y2ggZnJvbSB0aGUgZGV2IGJyYW5jaCwgdGhlbiBzdWJtaXQgYSBwYXRjaCB0bwpyZW1vdmUgdGhl IGYyZnNfYnVnX29uKCkgaW4gX19kZXN0cm95X2V4dGVudF9ub2RlLgoyLiBTZW5kIHR3byBwYXRj aGVzOiB0aGUgZmlyc3QgcmV2ZXJ0cyB0aGUgY2hhbmdlLCBhbmQgdGhlIHNlY29uZApyZW1vdmVz IHRoZSBmMmZzX2J1Z19vbigpIGluIF9fZGVzdHJveV9leHRlbnRfbm9kZSgpLgoKVGhhbmtzCllv bmdwZW5nLAoKPiAKPiBUaGFua3MsCj4gCj4+Cj4+IFRoYW5rcwo+PiBZb25ncGVuZywKPj4KPj4+ Cj4+PiBUaGFua3MsCj4+Pgo+Pj4KPj4+Pgo+Pj4+IFRoYW5rcwo+Pj4+IFlvbmdwZW5nLAo+Pj4+ Cj4+Pj4+Cj4+Pj4+IFRoYW5rcywKPj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBGaXhlczogM2ZjNWQ1YTE4 MmY2ICgiZjJmczogZml4IHRvIHNocmluayByZWFkIGV4dGVudCBub2RlIGluCj4+Pj4+PiBiYXRj aGVzIikKPj4+Pj4+IENjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCj4+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBZb25ncGVuZyBZYW5nIDx5YW5neW9uZ3BlbmdAeGlhb21pLmNvbT4KPj4+Pj4+IC0tLQo+ Pj4+Pj4gwqDCoMKgIGZzL2YyZnMvZXh0ZW50X2NhY2hlLmMgfCAxNyArKysrKysrKysrLS0tLS0t LQo+Pj4+Pj4gwqDCoMKgIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA3IGRlbGV0 aW9ucygtKQo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5j IGIvZnMvZjJmcy9leHRlbnRfY2FjaGUuYwo+Pj4+Pj4gaW5kZXggMGVkODRjYzA2NWE3Li44NzE2 OWZkMjlkODkgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4+Pj4+ PiArKysgYi9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4+Pj4+PiBAQCAtMTE5LDkgKzExOSwxMCBA QCBzdGF0aWMgYm9vbCBfX21heV9leHRlbnRfdHJlZShzdHJ1Y3QgaW5vZGUKPj4+Pj4+ICppbm9k ZSwgZW51bSBleHRlbnRfdHlwZSB0eXBlKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYgKCFfX2lu aXRfbWF5X2V4dGVudF90cmVlKGlub2RlLCB0eXBlKSkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGZhbHNlOwo+Pj4+Pj4gwqDCoMKgICvCoMKgwqAgaWYgKGlzX2lub2RlX2Zs YWdfc2V0KGlub2RlLCBGSV9OT19FWFRFTlQpKQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biBmYWxzZTsKPj4+Pj4+ICsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGlmICh0eXBlID09IEVYX1JF QUQpIHsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUs IEZJX05PX0VYVEVOVCkpCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFs c2U7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpc19pbm9kZV9mbGFnX3NldChp bm9kZSwgRklfQ09NUFJFU1NFRF9GSUxFKSAmJgo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAhZjJmc19zYl9oYXNfcmVhZG9ubHkoRjJGU19JX1NCKGlub2Rl KSkpCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ Pj4+Pj4gQEAgLTY0NCw2ICs2NDUsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IF9fZGVzdHJveV9l eHRlbnRfbm9kZShzdHJ1Y3QKPj4+Pj4+IGlub2RlICppbm9kZSwKPj4+Pj4+IMKgwqDCoCDCoMKg wqDCoMKgIHdoaWxlIChhdG9taWNfcmVhZCgmZXQtPm5vZGVfY250KSkgewo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB3cml0ZV9sb2NrKCZldC0+bG9jayk7Cj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKCFpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklfTk9fRVhURU5UKSkKPj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNldF9pbm9kZV9mbGFnKGlub2RlLCBGSV9OT19FWFRF TlQpOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBub2RlX2NudCArPSBfX2ZyZWVfZXh0 ZW50X3RyZWUoc2JpLCBldCwgbnJfc2hyaW5rKTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgd3JpdGVfdW5sb2NrKCZldC0+bG9jayk7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+ PiBAQCAtNjg4LDEyICs2OTEsMTIgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfZXh0ZW50X3RyZWVf cmFuZ2Uoc3RydWN0Cj4+Pj4+PiBpbm9kZSAqaW5vZGUsCj4+Pj4+PiDCoMKgwqAgwqDCoMKgwqDC oCB3cml0ZV9sb2NrKCZldC0+bG9jayk7Cj4+Pj4+PiDCoMKgwqAgLcKgwqDCoCBpZiAodHlwZSA9 PSBFWF9SRUFEKSB7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0 KGlub2RlLCBGSV9OT19FWFRFTlQpKSB7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3 cml0ZV91bmxvY2soJmV0LT5sb2NrKTsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+PiArwqDCoMKgIGlmIChpc19pbm9k ZV9mbGFnX3NldChpbm9kZSwgRklfTk9fRVhURU5UKSkgewo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHdyaXRlX3VubG9jaygmZXQtPmxvY2spOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsK Pj4+Pj4+ICvCoMKgwqAgfQo+Pj4+Pj4gwqDCoMKgICvCoMKgwqAgaWYgKHR5cGUgPT0gRVhfUkVB RCkgewo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmV2ID0gZXQtPmxhcmdlc3Q7Cj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlaS5sZW4gPSAwOwo+Pj4+Pgo+Pj4+Pgo+Pj4+ PgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZv cmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51 eC1mMmZzLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail3-164.sinamail.sina.com.cn (mail3-164.sinamail.sina.com.cn [202.108.3.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB45939446D for ; Tue, 21 Apr 2026 08:45:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.108.3.164 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776761108; cv=none; b=T21NcYHHZ+pDXjLvypu4mgwOn7h6hKn6Jlr2oDMpJkkRssPpG67A3spHdCwNGHts8S9qH6WoixW+eSmBMOv0kl5DjE4FN//pJl8VAMqtT+FwJkNnQKhFAW0cNumozWY8P4H58PNUucmWZGkfmpn9NKDtYdd98ByLS/1XZXcDpwo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776761108; c=relaxed/simple; bh=aqWysQGaJW+xB67eAREth+WtVfxeizO4vhCxxJN3bEg=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=d5z6dr8xgMLcEbnYVsu2OM7xSkR0ZGBxfGAk5e6t9XfWW3+cqa1xepAGs7jlqHZNQ6f7dB3AeowYMhHnWjFBK99lnp9PPGk+1M7Gy0IqZnTImS9w3bSgEkgoJLPhF+pPepcx5fC2wrXtuv2vLN2kUGLtgo3e7h1Z1NAn/Wb9FbI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sina.com; spf=pass smtp.mailfrom=sina.com; dkim=pass (1024-bit key) header.d=sina.com header.i=@sina.com header.b=Ik8p5+Nn; arc=none smtp.client-ip=202.108.3.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sina.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sina.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=sina.com header.i=@sina.com header.b="Ik8p5+Nn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sina.com; s=201208; t=1776761103; bh=E2sUUyzl/czcG49TlhncKVUKZFEb4ZnT0W3kUUQuXsU=; h=Message-ID:Date:Subject:From; b=Ik8p5+NnDPhCzSkx7xxLPj3X3DaEoek9bYGiTa+4q2sC4A/RJmJPMhe7XmE+NRaIV Ije7/xIuYaQrsQlwuSqod1oBCeKKVD/kEB9Bpooz2+MBgmQglO+t+jLNZNCpVSf32x 1ZePD64KGdWFY9erjTHdbsRFd3cSVYsyGbJOR0Nw= X-SMAIL-HELO: [10.189.138.37] Received: from unknown (HELO [10.189.138.37])([114.247.175.249]) by sina.com (10.54.253.32) with ESMTP id 69E7390000004791; Tue, 21 Apr 2026 16:44:49 +0800 (CST) X-Sender: monty_pavel@sina.com X-Auth-ID: monty_pavel@sina.com Authentication-Results: sina.com; spf=none smtp.mailfrom=monty_pavel@sina.com; dkim=none header.i=none; dmarc=none action=none header.from=monty_pavel@sina.com X-SMAIL-MID: 7061554456623 X-SMAIL-UIID: 363ED1C54E7D49C7898FF01356C99AC9-20260421-164449-1 Message-ID: <252cb446-e313-417b-b780-85dcdcf34a87@sina.com> Date: Tue, 21 Apr 2026 16:44:47 +0800 Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [f2fs-dev] [PATCH] f2fs: fix node_cnt race between extent node destroy and writeback To: Chao Yu , Jaegeuk Kim Cc: Yongpeng Yang , stable@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net References: <20260403144015.221811-3-monty_pavel@sina.com> <5c222edf-6888-4007-9240-9e7988b2dc71@sina.com> Content-Language: en-US From: Yongpeng Yang In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 4/20/26 15:28, Chao Yu via Linux-f2fs-devel wrote: > On 4/19/2026 12:29 AM, Yongpeng Yang wrote: >> >> On 4/18/26 8:51 AM, Chao Yu via Linux-f2fs-devel wrote: >>> On 4/17/26 21:26, Yongpeng Yang wrote: >>>> >>>> On 4/17/26 17:00, Chao Yu via Linux-f2fs-devel wrote: >>>>> On 4/3/26 22:40, Yongpeng Yang wrote: >>>>>> From: Yongpeng Yang >>>>>> >>>>>> f2fs_destroy_extent_node() does not set FI_NO_EXTENT before clearing >>>>>> extent nodes. When called from f2fs_drop_inode() with I_SYNC set, >>>>>> concurrent kworker writeback can insert new extent nodes into the >>>>>> same >>>>>> extent tree, racing with the destroy and triggering f2fs_bug_on() in >>>>>> __destroy_extent_node(). The scenario is as follows: >>>>>> >>>>>> drop inode                            writeback >>>>>>     - iput >>>>>>      - f2fs_drop_inode  // I_SYNC set >>>>>>       - f2fs_destroy_extent_node >>>>>>        - __destroy_extent_node >>>>>>         - while (node_cnt) { >>>>>>            write_lock(&et->lock) >>>>>>            __free_extent_tree >>>>>>            write_unlock(&et->lock) >>>>>>                                           - __writeback_single_inode >>>>>>                                            - f2fs_outplace_write_data >>>>>>                                             - >>>>>> f2fs_update_read_extent_cache >>>>>>                                              - >>>>>> __update_extent_tree_range >>>>>>                                               // FI_NO_EXTENT not >>>>>> set, >>>>>>                                               // insert new extent >>>>>> node >>>>>>           } // node_cnt == 0, exit while >>>>>>         - f2fs_bug_on(node_cnt)  // node_cnt > 0 >>>>>> >>>>>> Additionally, __update_extent_tree_range() only checks >>>>>> FI_NO_EXTENT for >>>>>> EX_READ type, leaving EX_BLOCK_AGE updates completely unprotected. >>>>>> >>>>>> This patch set FI_NO_EXTENT under et->lock in >>>>>> __destroy_extent_node(), >>>>>> consistent with other callers (__update_extent_tree_range and >>>>>> __drop_extent_tree) and check FI_NO_EXTENT for both EX_READ and >>>>>> EX_BLOCK_AGE tree. >>>>> >>>>> I suffered below test failure, then I bisect to this change. >>>>> >>>>>       generic/475  84s ... [failed, exit status 1]- output mismatch >>>>> (see / >>>>> share/git/fstests/results//generic/475.out.bad) >>>>>       --- tests/generic/475.out   2025-01-12 21:57:40.279440664 +0800 >>>>>       +++ /share/git/fstests/results//generic/475.out.bad 2026-04-17 >>>>> 12:08:28.000000000 +0800 >>>>>       @@ -1,2 +1,6 @@ >>>>>        QA output created by 475 >>>>>        Silence is golden. >>>>>       +mount: /mnt/scratch_f2fs: mount system call failed: Structure >>>>> needs >>>>> cleaning. >>>>>       +       dmesg(1) may have more information after failed mount >>>>> system >>>>> call. >>>>>       +mount failed >>>>>       +(see /share/git/fstests/results//generic/475.full for details) >>>>>       ... >>>>>       (Run 'diff -u /share/git/fstests/tests/generic/475.out / >>>>> share/git/ >>>>> fstests/results//generic/475.out.bad'  to see the entire diff) >>>>> >>>>> >>>>>       generic/388  73s ... [failed, exit status 1]- output mismatch >>>>> (see / >>>>> share/git/fstests/results//generic/388.out.bad) >>>>>       --- tests/generic/388.out   2025-01-12 21:57:40.275440602 +0800 >>>>>       +++ /share/git/fstests/results//generic/388.out.bad 2026-04-17 >>>>> 11:58:05.000000000 +0800 >>>>>       @@ -1,2 +1,6 @@ >>>>>        QA output created by 388 >>>>>        Silence is golden. >>>>>       +mount: /mnt/scratch_f2fs: mount system call failed: Structure >>>>> needs >>>>> cleaning. >>>>>       +       dmesg(1) may have more information after failed mount >>>>> system >>>>> call. >>>>>       +cycle mount failed >>>>>       +(see /share/git/fstests/results//generic/388.full for details) >>>>>       ... >>>>>       (Run 'diff -u /share/git/fstests/tests/generic/388.out / >>>>> share/git/ >>>>> fstests/results//generic/388.out.bad'  to see the entire diff) >>>>> >>>>> >>>>>       F2FS-fs (dm-0): sanity_check_extent_cache: inode (ino=1761) >>>>> extent >>>>> info [220057, 57, 6] is incorrect, run fsck to fix >>>>> >>>>> I suspect we may miss any extent updates after we set FI_NO_EXTENT in >>>>> __destroy_extent_node(), result in failing in >>>>> sanity_check_extent_cache(). >>>>> >>>>> Can we just relocate f2fs_bug_on(node_cnt) rather than complicated >>>>> change? >>>>> Thoughts? >>>> >>>> Oh, I overlooked largest extent. How about relocate >>>> f2fs_bug_on(node_cnt) to __destroy_extent_tree? >>>> >>>> static void __destroy_extent_tree(struct inode *inode, enum extent_type >>>> type) >>>> >>>>           /* free all extent info belong to this extent tree */ >>>>           node_cnt = __destroy_extent_node(inode, type); >>>> +       f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); >>> >>>       /* free all extent info belong to this extent tree */ >>>       node_cnt = __destroy_extent_node(inode, type); >>> >>>       /* delete extent tree entry in radix tree */ >>>       mutex_lock(&eti->extent_tree_lock); >>>       f2fs_bug_on(sbi, atomic_read(&et->node_cnt));  <--- >>> >>> Oh, it has already checked node_cnt, so, maybe we can just remove the >>> check in >>> __destroy_extent_node()? >> >> Yes. BTW, is it correct to remove the call to f2fs_destroy_extent_node() >> in f2fs_drop_inode()? It seems this call is unnecessary, since >> f2fs_evict_inode() will eventually delete all extent nodes properly. > > I think it's fine to keep it according to original intention "destroy > extent_tree for the truncation case" introduced from 3e72f721390d > ("f2fs: use extent_cache by default"). It helps the performance w/ > in batch extent node release. Oh, I see. This patch has already been merged into the dev branch. Which of the following approaches would be more appropriate? 1. Drop the current patch from the dev branch, then submit a patch to remove the f2fs_bug_on() in __destroy_extent_node. 2. Send two patches: the first reverts the change, and the second removes the f2fs_bug_on() in __destroy_extent_node(). Thanks Yongpeng, > > Thanks, > >> >> Thanks >> Yongpeng, >> >>> >>> Thanks, >>> >>> >>>> >>>> Thanks >>>> Yongpeng, >>>> >>>>> >>>>> Thanks, >>>>> >>>>>> >>>>>> Fixes: 3fc5d5a182f6 ("f2fs: fix to shrink read extent node in >>>>>> batches") >>>>>> Cc: stable@vger.kernel.org >>>>>> Signed-off-by: Yongpeng Yang >>>>>> --- >>>>>>     fs/f2fs/extent_cache.c | 17 ++++++++++------- >>>>>>     1 file changed, 10 insertions(+), 7 deletions(-) >>>>>> >>>>>> diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c >>>>>> index 0ed84cc065a7..87169fd29d89 100644 >>>>>> --- a/fs/f2fs/extent_cache.c >>>>>> +++ b/fs/f2fs/extent_cache.c >>>>>> @@ -119,9 +119,10 @@ static bool __may_extent_tree(struct inode >>>>>> *inode, enum extent_type type) >>>>>>         if (!__init_may_extent_tree(inode, type)) >>>>>>             return false; >>>>>>     +    if (is_inode_flag_set(inode, FI_NO_EXTENT)) >>>>>> +        return false; >>>>>> + >>>>>>         if (type == EX_READ) { >>>>>> -        if (is_inode_flag_set(inode, FI_NO_EXTENT)) >>>>>> -            return false; >>>>>>             if (is_inode_flag_set(inode, FI_COMPRESSED_FILE) && >>>>>>                      !f2fs_sb_has_readonly(F2FS_I_SB(inode))) >>>>>>                 return false; >>>>>> @@ -644,6 +645,8 @@ static unsigned int __destroy_extent_node(struct >>>>>> inode *inode, >>>>>>           while (atomic_read(&et->node_cnt)) { >>>>>>             write_lock(&et->lock); >>>>>> +        if (!is_inode_flag_set(inode, FI_NO_EXTENT)) >>>>>> +            set_inode_flag(inode, FI_NO_EXTENT); >>>>>>             node_cnt += __free_extent_tree(sbi, et, nr_shrink); >>>>>>             write_unlock(&et->lock); >>>>>>         } >>>>>> @@ -688,12 +691,12 @@ static void __update_extent_tree_range(struct >>>>>> inode *inode, >>>>>>           write_lock(&et->lock); >>>>>>     -    if (type == EX_READ) { >>>>>> -        if (is_inode_flag_set(inode, FI_NO_EXTENT)) { >>>>>> -            write_unlock(&et->lock); >>>>>> -            return; >>>>>> -        } >>>>>> +    if (is_inode_flag_set(inode, FI_NO_EXTENT)) { >>>>>> +        write_unlock(&et->lock); >>>>>> +        return; >>>>>> +    } >>>>>>     +    if (type == EX_READ) { >>>>>>             prev = et->largest; >>>>>>             dei.len = 0; >>>>> >>>>> >>>>>