From: Ashish Sangwan Subject: Re: [PATCH] ext4: fix extent tree corruption that incurred by hole punch Date: Mon, 10 Dec 2012 11:52:39 +0530 Message-ID: References: <1354623069-8124-1-git-send-email-forrestl@synology.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Cc: "Theodore Ts'o" , ext4 development , Eric Sandeen To: Forrest Liu Return-path: Received: from mail-vb0-f46.google.com ([209.85.212.46]:43303 "EHLO mail-vb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751667Ab2LJGWk (ORCPT ); Mon, 10 Dec 2012 01:22:40 -0500 Received: by mail-vb0-f46.google.com with SMTP id b13so2119714vby.19 for ; Sun, 09 Dec 2012 22:22:39 -0800 (PST) In-Reply-To: Sender: linux-ext4-owner@vger.kernel.org List-ID: > Hi Ashish, > > First, create a file lager than 4GB, and then punch out every even blocks; > Use ex command in debugfs to dump extents, belowing is the result. > > Level Entries Logical Physical Length Flags > 0/ 3 1/ 1 1 - 1048575 40013 1048575 > 1/ 3 1/ 5 1 - 231160 40012 231160 > 2/ 3 1/340 1 - 680 40011 680 > 3/ 3 1/340 1 - 1 2228225 - 2228225 1 > 3/ 3 2/340 3 - 3 2228227 - 2228227 1 > 3/ 3 3/340 5 - 5 2228229 - 2228229 1 > > > punch out 231159, 231157, ..., 1.. > > > Level Entries Logical Physical Length Flags > 0/ 3 1/ 1 1 - 1048575 40013 1048575 > 1/ 3 1/ 4 231161 - 462320 2457604 231160 > 2/ 3 1/340 231161 - 231840 2457606 680 > 3/ 3 1/340 231161 - 231161 2459385 - 2459385 1 > > > Then, we get incorrect logical index, if only do correction in ext4_ext_rm_leaf. Ok, In your patch we can do without varibale border and instead use: path->p_idx->ei_block = (path+1)->p_idx->ei_block; Rest of the patch seems Ok. Thanks, Ashish > > > Thanks, > Forrest