]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
resize2fs: exit fix_sb_journal_backup early for external journal
authorEric Sandeen <sandeen@redhat.com>
Mon, 9 Nov 2009 20:57:04 +0000 (14:57 -0600)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 13 Nov 2009 00:46:56 +0000 (19:46 -0500)
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>
resize/resize2fs.c

index 648e1f930cc2068602f579b463f8d134dc2f3470..75c4721e504d874fc8720bce49c3bb5d385cca1d 100644 (file)
@@ -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;