From patchwork Sun Jan 29 16:01:04 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yongqiang Yang X-Patchwork-Id: 148249 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 C28CFB6EF4 for ; Fri, 23 Mar 2012 00:41:33 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757138Ab2CVNlc (ORCPT ); Thu, 22 Mar 2012 09:41:32 -0400 Received: from mail-iy0-f174.google.com ([209.85.210.174]:38287 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756284Ab2CVNlc (ORCPT ); Thu, 22 Mar 2012 09:41:32 -0400 Received: by mail-iy0-f174.google.com with SMTP id z16so3130313iag.19 for ; Thu, 22 Mar 2012 06:41:32 -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:in-reply-to:references; bh=o7GBmFvb2yOvSb8GsEmOGYQMXHiObXQ/HTyWbxXExgs=; b=t0pulanFbI1R5wGRjnylkzuawrtPYjZbwq7eJygVNVdV3Qrv9KUq9mWHcSOHL/2Ocs +0zpjUEIjJvqxh2GTPNXfIBlTRAOk9/KHNPFzS8ZueW5oPP7f5DToc69QhdW/2kSUUeP /bP+qPzLWeJS9IemLhg28XZewboYaj65lPvnRXEQLPekUaW5DZjR6hFIg8p/21HCVD0f S4LzkHA9aHAhlHNCXYMQ981Qyd8Wv7BPGtBxYVlEA1L6hbvpR/QIIVrhfBXf9r3RSD7h G1yHla9ThzZvcqtobh5bCkUuCQsJM2iWU6XRLFxD4vmgd7VVmNM0JMdB3riH58AGTXiX q7ow== Received: by 10.50.212.101 with SMTP id nj5mr1653090igc.41.1332423692063; Thu, 22 Mar 2012 06:41:32 -0700 (PDT) Received: from localhost.localdomain ([159.226.43.42]) by mx.google.com with ESMTPS id ko6sm1412236igc.2.2012.03.22.06.41.29 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 22 Mar 2012 06:41:31 -0700 (PDT) From: Yongqiang Yang To: linux-ext4@vger.kernel.org Cc: adilger@gmail.com, Yongqiang Yang Subject: [PATCH 2/4] ext4: fix a bug in resize when first_data_block != 0 Date: Mon, 30 Jan 2012 00:01:04 +0800 Message-Id: <1327852866-4448-3-git-send-email-xiaoqiangnk@gmail.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1327852866-4448-1-git-send-email-xiaoqiangnk@gmail.com> References: <1327852866-4448-1-git-send-email-xiaoqiangnk@gmail.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org ext4_group_first_block_no should be used to computer block offset and first block no in group rather than group * block_per_group. Otherwise, if first_data_block != 0, the result is wrong. Signed-off-by: Yongqiang Yang --- fs/ext4/resize.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 9a6fb74..58109fa 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -956,7 +956,6 @@ static void update_backups(struct super_block *sb, { struct ext4_sb_info *sbi = EXT4_SB(sb); const ext4_group_t last = sbi->s_groups_count; - const int bpg = EXT4_BLOCKS_PER_GROUP(sb); unsigned three = 1; unsigned five = 5; unsigned seven = 7; @@ -982,7 +981,8 @@ static void update_backups(struct super_block *sb, (err = ext4_journal_restart(handle, EXT4_MAX_TRANS_DATA))) break; - bh = sb_getblk(sb, group * bpg + blk_off); + bh = sb_getblk(sb, ext4_group_first_block_no(sb, group) + + blk_off); if (!bh) { err = -EIO; break; @@ -1291,15 +1291,17 @@ exit_journal: if (!err) { int i; - update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, - sizeof(struct ext4_super_block)); + ext4_fsblk_t first_block; + first_block = ext4_group_first_block_no(sb, 0); + update_backups(sb, sbi->s_sbh->b_blocknr - first_block, + (char *)es, sizeof(struct ext4_super_block)); for (i = 0; i < flex_gd->count; i++, group++) { struct buffer_head *gdb_bh; int gdb_num; gdb_num = group / EXT4_BLOCKS_PER_GROUP(sb); gdb_bh = sbi->s_group_desc[gdb_num]; - update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data, - gdb_bh->b_size); + update_backups(sb, gdb_bh->b_blocknr - first_block, + gdb_bh->b_data, gdb_bh->b_size); } } exit: