Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4012796pxf; Tue, 6 Apr 2021 06:05:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0lzkjbuNJBwvuZZM9xMY3Ikf8z1G0g5n33LkP7Xg0oHxaIo9bLWWJlz0m78L4hxTbSjUv X-Received: by 2002:a17:906:b296:: with SMTP id q22mr11998291ejz.161.1617714346967; Tue, 06 Apr 2021 06:05:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617714346; cv=none; d=google.com; s=arc-20160816; b=seRAyhcJNSiH+MgOm+JnCBx54I3OarAb5T5lZKsI8LC3HRiYnSryIl8i9u9xtPG0Oc Tw1X5Ic8Ei5WCDOOL5h06YmTsf1DZkXkP2v01R0xS5i+AFsT57pb9wgtxvPhGOIgnAEV TmXUALP7xYMaT8auZ+EuUvMCzl33Zd/XkSuWZ6p1jUM2SCWLMD2kLSvTqsdGKnf9M+TQ 3V7mer66f+tyIaVuhO1SUmWGgIOgIRfxmvgrU/VBoTljSnUSfJWQuFA/lVsmzDhsGFak yVUCj9BkBcWSbYEOgYlPyFHZkeqEpXq2FM++cTq+3LyuaxLAat8hbQw+Wv6M4YISS7QR frXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=PJrPD7Ap2YMrWxRfgWPP9eZ3A+Un3AGdGqNHIGXmPqM=; b=QQIIL/aIch0K6POB6fCGeWl11U5ySEkrTN3rHzp7Dve7ztyTKr2VFF5lzFNP3Yfjgq o6Kjs1xYSLTChxoD8enlM21BlCloG89zFQxlsxWiozUMeU/0/ZADtfb5Gjz7/JZ09Mbr kJSOvnUSQJhgLME/QoU90ZfGN+V0gd52IpszF4IHfSO3nHqwzcPGqFMKFVOTU17709c9 c5v7gfaoF+hbJIfzDS07Kgln3poWjyLy25sotcApwdUQZDVaYEfTLYszEZ1HgeQ/hI6d 3gefEzKijQoMWS2j9HPyZDWZQSMWzEN6X63YfsPrEY7Dl63Fph0Y2sidp3AD7X+rGHcQ hmMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t22si16359294edd.558.2021.04.06.06.05.14; Tue, 06 Apr 2021 06:05:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238445AbhDFDep (ORCPT + 99 others); Mon, 5 Apr 2021 23:34:45 -0400 Received: from outgoing-auth-1.mit.edu ([18.9.28.11]:46077 "EHLO outgoing.mit.edu" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S233879AbhDFDep (ORCPT ); Mon, 5 Apr 2021 23:34:45 -0400 Received: from cwcc.thunk.org (pool-72-74-133-215.bstnma.fios.verizon.net [72.74.133.215]) (authenticated bits=0) (User authenticated as tytso@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 1363YRMW016082 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 5 Apr 2021 23:34:28 -0400 Received: by cwcc.thunk.org (Postfix, from userid 15806) id 854A515C3399; Mon, 5 Apr 2021 23:34:27 -0400 (EDT) Date: Mon, 5 Apr 2021 23:34:27 -0400 From: "Theodore Ts'o" To: Ye Bin Cc: adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] ext4: Fix bug on in ext4_es_cache_extent as ext4_split_extent_at failed Message-ID: References: <20210325022925.1769056-1-yebin10@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210325022925.1769056-1-yebin10@huawei.com> Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Thu, Mar 25, 2021 at 10:29:25AM +0800, Ye Bin wrote: > We got follow bug_on: > [130747.323114] kernel BUG at fs/ext4/extents_status.c:762! > [130747.323117] Internal error: Oops - BUG: 0 [#1] SMP > ...... > [130747.334329] Call trace: > [130747.334553] ext4_es_cache_extent+0x150/0x168 [ext4] > [130747.334975] ext4_cache_extents+0x64/0xe8 [ext4] > [130747.335368] ext4_find_extent+0x300/0x330 [ext4] > [130747.335759] ext4_ext_map_blocks+0x74/0x1178 [ext4] > [130747.336179] ext4_map_blocks+0x2f4/0x5f0 [ext4] > [130747.336567] ext4_mpage_readpages+0x4a8/0x7a8 [ext4] > [130747.336995] ext4_readpage+0x54/0x100 [ext4] > [130747.337359] generic_file_buffered_read+0x410/0xae8 > [130747.337767] generic_file_read_iter+0x114/0x190 > [130747.338152] ext4_file_read_iter+0x5c/0x140 [ext4] > [130747.338556] __vfs_read+0x11c/0x188 > [130747.338851] vfs_read+0x94/0x150 > [130747.339110] ksys_read+0x74/0xf0 > > If call ext4_ext_insert_extent failed but new extent already inserted, we just > update "ex->ee_len = orig_ex.ee_len", this will lead to extent overlap, then > cause bug on when cache extent. How did this happen in the first place? It sounds like if the extent was already inserted, that would be casue there was an on-disk file system corruption, no? In that case, shouldn't we call ext4_error() to declare the file system has an inconsistency, so it can be fixed by fsck? > If call ext4_ext_insert_extent failed don't update ex->ee_len with old value. > Maybe there will lead to block leak, but it can be fixed by fsck later. - Ted