+2001-04-16 Theodore Tso <tytso@valinux.com>
+
+ * mkjournal.c (ext2fs_create_journal_superblock): Add safety
+ check; return an error if there's an attempt to create a
+ journal less than 1024 filesystem blocks.
+
+ * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
+ EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
+
2001-02-20 Theodore Tso <tytso@valinux.com>
* bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
ec EXT2_ET_FILE_TOO_BIG,
"Ext2 file too big"
-ec EXT2_JOURNAL_NOT_BLOCK,
+ec EXT2_ET_JOURNAL_NOT_BLOCK,
"Supplied journal device not a block device"
-ec EXT2_NO_JOURNAL_SB,
+ec EXT2_ET_NO_JOURNAL_SB,
"Journal superblock not found"
+ec EXT2_ET_JOURNAL_TOO_SMALL,
+ "Journal must be at least 1024 blocks"
+
end
{
errcode_t retval;
journal_superblock_t *jsb;
-
+
+ if (size < 1024)
+ return EXT2_ET_JOURNAL_TOO_SMALL;
+
if ((retval = ext2fs_get_mem(fs->blocksize, (void **) &jsb)))
return retval;
return errno;
if (!S_ISBLK(st.st_mode))
- return EXT2_JOURNAL_NOT_BLOCK; /* Must be a block device */
+ return EXT2_ET_JOURNAL_NOT_BLOCK; /* Must be a block device */
/* Get the journal superblock */
if ((retval = io_channel_read_blk(journal_dev->io, 1, -1024, buf)))
jsb = (journal_superblock_t *) buf;
if ((jsb->s_header.h_magic != (unsigned) ntohl(JFS_MAGIC_NUMBER)) ||
(jsb->s_header.h_blocktype != (unsigned) ntohl(JFS_SUPERBLOCK_V2)))
- return EXT2_NO_JOURNAL_SB;
+ return EXT2_ET_NO_JOURNAL_SB;
if (ntohl(jsb->s_blocksize) != fs->blocksize)
return EXT2_ET_UNEXPECTED_BLOCK_SIZE;