From patchwork Fri May 24 14:39:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashish Sangwan X-Patchwork-Id: 246182 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C731A2C0091 for ; Sat, 25 May 2013 00:39:33 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753478Ab3EXOjc (ORCPT ); Fri, 24 May 2013 10:39:32 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]:53506 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752426Ab3EXOjb (ORCPT ); Fri, 24 May 2013 10:39:31 -0400 Received: by mail-pa0-f47.google.com with SMTP id kl12so920034pab.6 for ; Fri, 24 May 2013 07:39:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=23iHQyvaqxZmVnBtDGOGgG/JVXCYKK5T3x6Oki4ucrY=; b=Vh2MrZ2Y6gPZIFOFEoJe6f7Ke8xykYlXkccXsI5VgxzxnKao9Zp/aB3fFrVi49CG2O RVKZ7u/E1m+nllzlBGHtrdEaqoRmVYj+sh/65UCYPNv58BFA6tj6x0FJYOSGsSAbzHxK 7D9ABhXEFt+vDrCjd314YnD8zueznPIkHSsEld4XERv0HWDazxVVNWNEynR3oMa2xfPC yxxM4AcqUHDYmA30/bdum6IvEMn5BDwiz8L1ASPtoarguQzwFibA5Td4oVuzvXIh8HwR btfh2gpZOHAey/ObKZTmrflEgcVAUxXIP3wj7PJVC5+pdNVC5YNOtYoi179XOWLst37O xzuA== X-Received: by 10.66.188.137 with SMTP id ga9mr18828653pac.9.1369406371418; Fri, 24 May 2013 07:39:31 -0700 (PDT) Received: from localhost.localdomain ([117.55.243.86]) by mx.google.com with ESMTPSA id zo4sm16438710pbc.21.2013.05.24.07.39.27 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 24 May 2013 07:39:30 -0700 (PDT) From: ashishsangwan2@gmail.com To: tytso@mit.edu, adilger@dilger.ca Cc: linux-ext4@vger.kernel.org, Ashish Sangwan , Namjae Jeon Subject: [PATCH] ext4: optimize extent selection for block removal in case of hole punch Date: Fri, 24 May 2013 20:09:17 +0530 Message-Id: <519f7ba2.04fc440a.06c2.ffffd589@mx.google.com> X-Mailer: git-send-email 1.7.11.4 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Ashish Sangwan Both hole punch and truncate use ext4_ext_rm_leaf for removing blocks. Currently we choose the last extent as the starting point for removing blocks: ex = EXT_LAST_EXTENT(eh); This is OK for truncate but for hole punch we can optimize the extent selection as the path is already initialized. We could use this information to select proper starting extent. The code change in this patch will not affect truncate as for truncate path[depth].p_ext will always be NULL. Signed-off-by: Ashish Sangwan Signed-off-by: Namjae Jeon --- fs/ext4/extents.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 3676dae..7c1a5d3 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -2490,7 +2490,9 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, return -EIO; } /* find where to start removing */ - ex = EXT_LAST_EXTENT(eh); + ex = path[depth].p_ext; + if (!ex) + ex = EXT_LAST_EXTENT(eh); ex_ee_block = le32_to_cpu(ex->ee_block); ex_ee_len = ext4_ext_get_actual_len(ex);