2008-12-03 19:58:09

by Greg KH

[permalink] [raw]
Subject: [patch 101/104] ext3: dont try to resize if there are no reserved gdt blocks left

2.6.27-stable review patch. If anyone has any objections, please let us know.

------------------
From: Josef Bacik <[email protected]>

commit 972fbf779832e5ad15effa7712789aeff9224c37 upstream.

When trying to resize a ext3 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 <[email protected]>
Cc: <[email protected]>
Cc: Andreas Dilger <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Cc: Willy Tarreau <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
fs/ext3/resize.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -790,7 +790,8 @@ int ext3_group_add(struct super_block *s

if (reserved_gdb || gdb_off == 0) {
if (!EXT3_HAS_COMPAT_FEATURE(sb,
- EXT3_FEATURE_COMPAT_RESIZE_INODE)){
+ EXT3_FEATURE_COMPAT_RESIZE_INODE)
+ || !le16_to_cpu(es->s_reserved_gdt_blocks)) {
ext3_warning(sb, __func__,
"No reserved GDT blocks, can't resize");
return -EPERM;



2008-12-04 22:10:26

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: [patch 101/104] ext3: dont try to resize if there are no reserved gdt blocks left

On Wed, 03 Dec 2008 11:56:53 PST, Greg KH said:

> if (reserved_gdb || gdb_off == 0) {
> if (!EXT3_HAS_COMPAT_FEATURE(sb,
> - EXT3_FEATURE_COMPAT_RESIZE_INODE))
{
> + EXT3_FEATURE_COMPAT_RESIZE_INODE)
> + || !le16_to_cpu(es->s_reserved_gdt_blocks)) {
> ext3_warning(sb, __func__,
> "No reserved GDT blocks, can't resize");
> return -EPERM;

What's the codepath if the compat_feature part trips, but the le16_to_cpu
doesn't? Looks to me like it will then skip over the 'return -EPERM'?


Attachments:
(No filename) (226.00 B)