#
# Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.  
#
# %Begin-Header%
# This file may be redistributed under the terms of the GNU Public
# License.
# %End-Header%
#
	error_table ext2

ec	EXT2_ET_BASE,
	"EXT2FS Library version @E2FSPROGS_VERSION@"

ec	EXT2_ET_MAGIC_EXT2FS_FILSYS,
	"Wrong magic number for ext2_filsys structure"

ec	EXT2_ET_MAGIC_BADBLOCKS_LIST,
	"Wrong magic number for badblocks_list structure"

ec	EXT2_ET_MAGIC_BADBLOCKS_ITERATE,
	"Wrong magic number for badblocks_iterate structure"

ec	EXT2_ET_MAGIC_INODE_SCAN,
	"Wrong magic number for inode_scan structure"

ec	EXT2_ET_MAGIC_IO_CHANNEL,
	"Wrong magic number for io_channel structure"

ec	EXT2_ET_MAGIC_UNIX_IO_CHANNEL,
	"Wrong magic number for unix io_channel structure"

ec	EXT2_ET_MAGIC_IO_MANAGER,
	"Wrong magic number for io_manager structure"

ec	EXT2_ET_MAGIC_BLOCK_BITMAP,
	"Wrong magic number for block_bitmap structure"

ec	EXT2_ET_MAGIC_INODE_BITMAP,
	"Wrong magic number for inode_bitmap structure"

ec	EXT2_ET_MAGIC_GENERIC_BITMAP,
	"Wrong magic number for generic_bitmap structure"

ec	EXT2_ET_MAGIC_TEST_IO_CHANNEL,
	"Wrong magic number for test io_channel structure"

ec	EXT2_ET_MAGIC_DBLIST,
	"Wrong magic number for directory block list structure"

ec	EXT2_ET_MAGIC_ICOUNT,
	"Wrong magic number for icount structure"

ec	EXT2_ET_MAGIC_RESERVED_5,
	"Wrong magic number --- RESERVED_5"

ec	EXT2_ET_MAGIC_RESERVED_6,
	"Wrong magic number --- RESERVED_6"

ec	EXT2_ET_MAGIC_RESERVED_7,
	"Wrong magic number --- RESERVED_7"

ec	EXT2_ET_MAGIC_RESERVED_8,
	"Wrong magic number --- RESERVED_8"

ec	EXT2_ET_MAGIC_RESERVED_9,
	"Wrong magic number --- RESERVED_9"

ec	EXT2_ET_BAD_MAGIC,
	"Bad magic number in super-block"

ec	EXT2_ET_REV_TOO_HIGH,
	"Filesystem revision too high"

ec	EXT2_ET_SB_LSEEK,
	"Can't seek to superblock"

ec	EXT2_ET_SB_READ,
	"Can't read superblock"

ec	EXT2_ET_SB_WRITE,
	"Can't write superblock"

ec	EXT2_ET_RO_FILSYS,
	"Attempt to write to filesystem opened read-only"

ec	EXT2_ET_GDESC_READ,
	"Can't read group descriptors"

ec	EXT2_ET_GDESC_WRITE,
	"Can't write group descriptors"

ec	EXT2_ET_GDESC_BAD_BLOCK_MAP,
	"Corrupt group descriptor: bad block for block bitmap"

ec	EXT2_ET_GDESC_BAD_INODE_MAP,
	"Corrupt group descriptor: bad block for inode bitmap"

ec	EXT2_ET_GDESC_BAD_INODE_TABLE,
	"Corrupt group descriptor: bad block for inode table"

ec	EXT2_ET_INODE_BITMAP_WRITE,
	"Can't write an inode bitmap"

ec	EXT2_ET_INODE_BITMAP_READ,
	"Can't read an inode bitmap"

ec	EXT2_ET_BLOCK_BITMAP_WRITE,
	"Can't write an block bitmap"

ec	EXT2_ET_BLOCK_BITMAP_READ,
	"Can't read an block bitmap"

ec	EXT2_ET_INODE_TABLE_WRITE,
	"Can't write an inode table"

ec	EXT2_ET_INODE_TABLE_READ,
	"Can't read an inode table"

ec	EXT2_ET_NEXT_INODE_READ,
	"Can't read next inode"

ec	EXT2_ET_UNEXPECTED_BLOCK_SIZE,
	"Filesystem has unexpected block size"

ec	EXT2_ET_DIR_CORRUPTED,
	"EXT2 directory corrupted"

ec	EXT2_ET_SHORT_READ,
	"Attempt to read block from filesystem resulted in short read"

ec	EXT2_ET_SHORT_WRITE,
	"Attempt to write block from filesystem resulted in short write"

ec	EXT2_ET_DIR_NO_SPACE,
	"No free space in the directory"

ec	EXT2_ET_NO_INODE_BITMAP,
	"Inode bitmap not loaded"

ec	EXT2_ET_NO_BLOCK_BITMAP,
	"BLOCK bitmap not loaded"

ec	EXT2_ET_BAD_INODE_NUM,
	"Illegal inode number"

ec	EXT2_ET_BAD_BLOCK_NUM,
	"Illegal block number"

ec	EXT2_ET_EXPAND_DIR_ERR,
	"Internal error in ext2fs_expand_dir"

ec	EXT2_ET_TOOSMALL,
	"Not enough space to build proposed filesystem"

ec	EXT2_ET_BAD_BLOCK_MARK,
	"Illegal block number passed to ext2fs_mark_block_bitmap"

ec	EXT2_ET_BAD_BLOCK_UNMARK,
	"Illegal block number passed to ext2fs_unmark_block_bitmap"

ec	EXT2_ET_BAD_BLOCK_TEST,
	"Illegal block number passed to ext2fs_test_block_bitmap"

ec	EXT2_ET_BAD_INODE_MARK,
	"Illegal inode number passed to ext2fs_mark_inode_bitmap"

ec	EXT2_ET_BAD_INODE_UNMARK,
	"Illegal inode number passed to ext2fs_unmark_inode_bitmap"

ec	EXT2_ET_BAD_INODE_TEST,
	"Illegal inode number passed to ext2fs_test_inode_bitmap"

ec	EXT2_ET_FUDGE_BLOCK_BITMAP_END,
	"Attempt to fudge end of block bitmap past the real end"

ec	EXT2_ET_FUDGE_INODE_BITMAP_END,
	"Attempt to fudge end of inode bitmap past the real end"

ec	EXT2_ET_BAD_IND_BLOCK,
	"Illegal indirect block found" 

ec	EXT2_ET_BAD_DIND_BLOCK,
	"Illegal doubly indirect block found" 

ec	EXT2_ET_BAD_TIND_BLOCK,
	"Illegal triply indirect block found" 

ec	EXT2_ET_NEQ_BLOCK_BITMAP,
	"Block bitmaps are not the same"

ec	EXT2_ET_NEQ_INODE_BITMAP,
	"Inode bitmaps are not the same"

ec	EXT2_ET_BAD_DEVICE_NAME,
	"Illegal or malformed device name"

ec	EXT2_ET_MISSING_INODE_TABLE,
	"A block group is missing an inode table"

ec	EXT2_ET_CORRUPT_SUPERBLOCK,
	"The ext2 superblock is corrupt"

ec	EXT2_ET_BAD_GENERIC_MARK,
	"Illegal generic bit number passed to ext2fs_mark_generic_bitmap"

ec	EXT2_ET_BAD_GENERIC_UNMARK,
	"Illegal generic bit number passed to ext2fs_unmark_generic_bitmap"

ec	EXT2_ET_BAD_GENERIC_TEST,
	"Illegal generic bit number passed to ext2fs_test_generic_bitmap"

ec	EXT2_ET_SYMLINK_LOOP,
	"Too many symbolic links encountered."

ec	EXT2_ET_CALLBACK_NOTHANDLED,
	"The callback function will not handle this case"

ec	EXT2_ET_BAD_BLOCK_IN_INODE_TABLE,
	"The inode is from a bad block in the inode table"

ec	EXT2_ET_UNSUPP_FEATURE,
	"Filesystem has unsupported feature(s)"

ec	EXT2_ET_RO_UNSUPP_FEATURE,
	"Filesystem has unsupported read-only feature(s)"

ec	EXT2_IO_LLSEEK_FAILED,
	"IO Channel failed to seek on read or write"

	end
