From patchwork Tue Mar 3 03:04:13 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Tao X-Patchwork-Id: 23976 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 71821DDEF3 for ; Tue, 3 Mar 2009 14:04:27 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752137AbZCCDE1 (ORCPT ); Mon, 2 Mar 2009 22:04:27 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752362AbZCCDE1 (ORCPT ); Mon, 2 Mar 2009 22:04:27 -0500 Received: from ti-out-0910.google.com ([209.85.142.188]:44837 "EHLO ti-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752137AbZCCDE0 (ORCPT ); Mon, 2 Mar 2009 22:04:26 -0500 Received: by ti-out-0910.google.com with SMTP id d10so2980047tib.23 for ; Mon, 02 Mar 2009 19:04:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=yn0O3xp2JGXA3N8+8saJRdBr688aE1FWVQDY0w3chtQ=; b=tQcxXnR5nKG6Ieqt6oSJvG6RhMucCb6ywswAfASSsVPdJddMaAWCIyUwb7wH7z/yyX I4XLELq4cCy8Yz+EQHARJyAUTf+AwpoSN6Xe7FdWCNmp0JxDDyc3EYZuwAEzgdigluQI BCbLHS7k6jUtgWgXBSr4fDlTdLZjVuV/YhGv8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=r/b+QeeZLuxjtneWNXILJkR1YKtkCd7F4l7FzcJcz8whuB1lPWAmvc9Iqq5Lci845m zCKh6HBN1/xw6w/IS3y9pycmgHzxLrQmAb3pok//25BrZcRz3GsHYZb9VhB8XFRqT8MZ WejTi9IoNv3YsLewAZQ9Vg4XZ5zxLj8ADBynQ= Received: by 10.110.52.1 with SMTP id z1mr6380055tiz.27.1236049463359; Mon, 02 Mar 2009 19:04:23 -0800 (PST) Received: from localhost.localdomain ([59.64.157.11]) by mx.google.com with ESMTPS id d1sm3098145tid.34.2009.03.02.19.04.21 (version=SSLv3 cipher=RC4-MD5); Mon, 02 Mar 2009 19:04:22 -0800 (PST) From: Peng Tao To: tytso@mit.edu Cc: linux-ext4@vger.kernel.org, Peng Tao Subject: [e2fsprogs][PATCH-v2] Allow tune2fs -I if only one group per flex Date: Tue, 3 Mar 2009 11:04:13 +0800 Message-Id: <1236049453-8851-1-git-send-email-bergwolf@gmail.com> X-Mailer: git-send-email 1.6.1.3 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org This can be caused by tune2fs -O flex_bg. And tune2fs -I should work okay if bitmaps and inode tables are still within the group. Signed-off-by: Peng Tao --- lib/ext2fs/check_desc.c | 12 +++++++++--- lib/ext2fs/ext2fs.h | 1 + misc/tune2fs.c | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/ext2fs/check_desc.c b/lib/ext2fs/check_desc.c index 299cb01..496c634 100644 --- a/lib/ext2fs/check_desc.c +++ b/lib/ext2fs/check_desc.c @@ -26,10 +26,17 @@ #include "ext2_fs.h" #include "ext2fs.h" +errcode_t ext2fs_check_desc(ext2_filsys fs) +{ + return ext2fs_check_desc_sanity(fs, + !EXT2_HAS_INCOMPAT_FEATURE(fs->super, + EXT4_FEATURE_INCOMPAT_FLEX_BG)); +} + /* * This routine sanity checks the group descriptors */ -errcode_t ext2fs_check_desc(ext2_filsys fs) +errcode_t ext2fs_check_desc_sanity(ext2_filsys fs, int within_group) { ext2fs_block_bitmap bmap; errcode_t retval; @@ -49,8 +56,7 @@ errcode_t ext2fs_check_desc(ext2_filsys fs) ext2fs_reserve_super_and_bgd(fs, i, bmap); for (i = 0; i < fs->group_desc_count; i++) { - if (!EXT2_HAS_INCOMPAT_FEATURE(fs->super, - EXT4_FEATURE_INCOMPAT_FLEX_BG)) { + if (within_group) { first_block = ext2fs_group_first_block(fs, i); last_block = ext2fs_group_last_block(fs, i); if (i == (fs->group_desc_count - 1)) diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index d5026bc..29fb129 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -724,6 +724,7 @@ extern errcode_t ext2fs_move_blocks(ext2_filsys fs, /* check_desc.c */ extern errcode_t ext2fs_check_desc(ext2_filsys fs); +extern errcode_t ext2fs_check_desc_sanity(ext2_filsys fs, int within_group); /* closefs.c */ extern errcode_t ext2fs_close(ext2_filsys fs); diff --git a/misc/tune2fs.c b/misc/tune2fs.c index 887a702..f6b4fb2 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -1715,7 +1715,8 @@ retry_open: exit(1); } if (fs->super->s_feature_incompat & - EXT4_FEATURE_INCOMPAT_FLEX_BG) { + EXT4_FEATURE_INCOMPAT_FLEX_BG && + ext2fs_check_desc_sanity(fs, 1)) { fputs(_("Changing the inode size not supported for " "filesystems with the flex_bg\n" "feature enabled.\n"),