summaryrefslogtreecommitdiffstats
path: root/fs/ext4/resize.c
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@redhat.com>2008-08-19 22:13:41 -0400
committerTheodore Ts'o <tytso@mit.edu>2008-08-19 22:13:41 -0400
commit37609fd5ae62db75026d9f53096a1fbc35e040d9 (patch)
treee9c021770b73fd407f2caaa38e3db74d4d76a564 /fs/ext4/resize.c
parent88aa3cff4e9a38b953de9fbc54c96e619a2bb9f9 (diff)
downloadlinux-stable-37609fd5ae62db75026d9f53096a1fbc35e040d9.tar.gz
linux-stable-37609fd5ae62db75026d9f53096a1fbc35e040d9.tar.bz2
linux-stable-37609fd5ae62db75026d9f53096a1fbc35e040d9.zip
ext4: don't try to resize if there are no reserved gdt blocks left
When trying to resize an ext4 fs and you run out of reserved gdt blocks, you get an error that doesn't actually tell you what went wrong, it just says that the gdb it picked is not correct, which is the case since you don't have any reserved gdt blocks left. This patch adds a check to make sure you have reserved gdt blocks to use, and if not prints out a more relevant error. Signed-off-by: Josef Bacik <jbacik@redhat.com> Cc: <linux-ext4@vger.kernel.org> Cc: Andreas Dilger <adilger@sun.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/resize.c')
-rw-r--r--fs/ext4/resize.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 0a9265164265..b3d35604ea18 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -773,7 +773,8 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
if (reserved_gdb || gdb_off == 0) {
if (!EXT4_HAS_COMPAT_FEATURE(sb,
- EXT4_FEATURE_COMPAT_RESIZE_INODE)){
+ EXT4_FEATURE_COMPAT_RESIZE_INODE)
+ || !le16_to_cpu(es->s_reserved_gdt_blocks)) {
ext4_warning(sb, __func__,
"No reserved GDT blocks, can't resize");
return -EPERM;