From patchwork Fri Oct 28 17:00:09 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Monakhov X-Patchwork-Id: 122448 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 EB22FB6F76 for ; Sat, 29 Oct 2011 04:00:31 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756080Ab1J1RA2 (ORCPT ); Fri, 28 Oct 2011 13:00:28 -0400 Received: from mail-bw0-f46.google.com ([209.85.214.46]:45611 "EHLO mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753917Ab1J1RA1 (ORCPT ); Fri, 28 Oct 2011 13:00:27 -0400 Received: by mail-bw0-f46.google.com with SMTP id zt4so624020bkb.19 for ; Fri, 28 Oct 2011 10:00:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=sTEpUOuIPtcFmP4IF1DHxCAizBzd7DIAqqao8d2ePGM=; b=KOWNog60h7iz9l3oqmu/yPAVrdrDGmnRF/0UKsMgxfQAjCJSTV8CN5oTgBajyzTgOz GxjkG/PiE8SjPrHdwUUs8WsoKvweQS8bu72Ng1GFPIdhuIoSiCf29fy/4RNCqmrXTIM3 OFKDB5ZW2Z+oHqk8URgU2XVRfjf0roN02Mviw= Received: by 10.204.9.217 with SMTP id m25mr3084546bkm.88.1319821226612; Fri, 28 Oct 2011 10:00:26 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id x8sm3655808bkv.10.2011.10.28.10.00.25 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 28 Oct 2011 10:00:25 -0700 (PDT) From: Dmitry Monakhov To: linux-ext4@vger.kernel.org Cc: achender@linux.vnet.ibm.com, tytso@mit.edu, Dmitry Monakhov Subject: [PATCH 6/7] ext4: punch hole should be restarted after transaction restart Date: Fri, 28 Oct 2011 21:00:09 +0400 Message-Id: <1319821210-7374-7-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1319821210-7374-1-git-send-email-dmonakhov@openvz.org> References: <1319821210-7374-1-git-send-email-dmonakhov@openvz.org> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org ext4_ext_rm_leaf() may return -EAGAIN due to transaction restart, repeat attempt in that case. Signed-off-by: Dmitry Monakhov --- fs/ext4/extents.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 5cce39a..a77cde2 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3795,7 +3795,7 @@ static int get_implied_cluster_alloc(struct super_block *sb, int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, int flags) { - struct ext4_ext_path *path = NULL; + struct ext4_ext_path *path; struct ext4_extent newex, *ex, *ex2; struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); ext4_fsblk_t newblock = 0; @@ -3811,6 +3811,9 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, map->m_lblk, map->m_len, inode->i_ino); trace_ext4_ext_map_blocks_enter(inode, map->m_lblk, map->m_len, flags); +again: + path = NULL; + /* check in cache */ if (!(flags & EXT4_GET_BLOCKS_PUNCH_OUT_EXT) && ext4_ext_in_cache(inode, map->m_lblk, &newex)) { @@ -3904,6 +3907,8 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, } ret = ext4_ext_handle_punched_extent(handle, inode, map, path); + if (ret == -EAGAIN) + goto again; return ret; } }