diff options
author | Eric Sandeen <sandeen@redhat.com> | 2009-11-09 14:57:04 -0600 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-11-12 19:46:56 -0500 |
commit | d93d5bbf605f81eb13fa71a55dfbed06f88fe930 (patch) | |
tree | 805a7f24d58d4f016879f42fc89a44bc8a7e6a2c /resize | |
parent | 06ef971be505678ee462ae1844204ed24f14aedc (diff) | |
download | e2fsprogs-d93d5bbf605f81eb13fa71a55dfbed06f88fe930.tar.gz |
resize2fs: exit fix_sb_journal_backup early for external journal
Resizing a filesystem with an external journal fails when it tries
to read inode 0:
# touch testfs
# truncate testfs 1342177280
# touch testjournal
# truncate testjournal 134217728
# mke2fs -O journal_dev testjournal
# losetup /dev/loop0 testjournal
# mkfs.ext4 -J device=/dev/loop0 testfs 127680
# resize2fs testfs
resize2fs 1.41.9 (22-Aug-2009)
Resizing the filesystem on testfs to 327680 (4k) blocks.
resize2fs: Illegal inode number while trying to resize testfs
Please run 'e2fsck -fy testfs' to fix the filesystem
after the aborted resize operation.
I think the right, simple thing to do is just bail out early
for an external journal here, as there are no backup blocks
to update.
Reported-by: mjevans1983@gmail.com
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'resize')
-rw-r--r-- | resize/resize2fs.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/resize/resize2fs.c b/resize/resize2fs.c index 648e1f93..75c4721e 100644 --- a/resize/resize2fs.c +++ b/resize/resize2fs.c @@ -1882,6 +1882,10 @@ static errcode_t fix_sb_journal_backup(ext2_filsys fs) if (!(fs->super->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL)) return 0; + /* External journal? Nothing to do. */ + if (fs->super->s_journal_dev && !fs->super->s_journal_inum) + return 0; + retval = ext2fs_read_inode(fs, fs->super->s_journal_inum, &inode); if (retval) return retval; |