e2fsprogs/e2fsck
Theodore Ts'o f77704e416 Add directory hashed signed/unsigned hint to superblock
The e2fsprogs and kernel implementation of directory hash tree has a
bug which causes the implementation to be dependent on whether
characters are signed or unsigned.  Platforms such as the PowerPC,
Arm, and S/390 have signed characters by default, which means that
hash directories on those systems are incompatible with hash
directories on other systems, such as the x86.

To fix this we add a new flags field to the superblock, and define two
new bits in that field to indicate whether or not the directory should
be signed or unsigned.  If the bits are not set, e2fsck and fixed
kernels will set them to the signed/unsigned value of the currently
running platform, and then respect those bits when calculating the
directory hash.  This allows compatibility with current filesystems,
as well as allowing cross-architectural compatibility.

Addresses Debian Bug: #389772

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2006-11-11 22:32:35 -05:00
..
CHANGES Many files: 1997-04-26 13:21:57 +00:00
ChangeLog Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
Makefile.in Fix Debian FTBFS problem caused by devmapper library using pthreads 2006-10-01 22:18:08 -04:00
Makefile.pq Many files: 1997-11-14 05:23:04 +00:00
argv_parse.c Add the profile library code to e2fsck 2005-12-30 23:57:32 -05:00
argv_parse.h Add the profile library code to e2fsck 2005-12-30 23:57:32 -05:00
badblocks.c Fix e2fsck and mke2fs -c to be pass the last _block change to badblocks 2006-11-08 00:41:50 -05:00
dict.c Fix gcc -Wall nitpicks 2003-12-07 01:28:50 -05:00
dict.h Fixx gcc -Wall nitpicks. 2003-07-06 00:36:48 -04:00
dirinfo.c ext2fs_getmem(), ext2fs_free_mem(), and ext2fs_resize_mem() 2003-08-01 09:41:07 -04:00
dx_dirinfo.c ext2fs_getmem(), ext2fs_free_mem(), and ext2fs_resize_mem() 2003-08-01 09:41:07 -04:00
e2fsck.8.in Fix spelling mistakes in e2fsck, mke2fs.conf, and resize2fs man pages 2006-05-22 17:59:37 -04:00
e2fsck.c Read in /etc/e2fsck.conf configuration file at startup 2005-12-31 00:00:10 -05:00
e2fsck.conf.5.in Minor correction to e2fsck.conf man page 2006-10-02 08:38:44 -04:00
e2fsck.h Fix signed vs unsigned printf format strings for block and inode numbers 2006-09-12 14:56:15 -04:00
ea_refcount.c Fix gcc -Wall nitpicks 2003-12-07 01:28:50 -05:00
ehandler.c Fix gcc -Wall nitpicks 2003-12-07 01:28:50 -05:00
emptydir.c Fix signed vs unsigned printf format strings for block and inode numbers 2006-09-12 14:56:15 -04:00
extend.c ChangeLog, extend.c, flushb.c: 2000-09-12 21:24:36 +00:00
flushb.c Remove the debian-special legal permission notes. 2003-04-14 20:40:49 -04:00
iscan.c Fix signed vs unsigned printf format strings for block and inode numbers 2006-09-12 14:56:15 -04:00
jfs_user.h Fixed potential ordering constraint problem in e2fsck's journal 2004-05-26 20:58:45 -04:00
journal.c Fix memory leak in e2fsck's error paths 2006-05-14 17:16:29 -04:00
message.c Fix format statements to make e2fsprogs programs 32-bit clean 2006-03-18 21:43:46 -05:00
mtrace.awk Many files: 1997-04-26 13:21:57 +00:00
mtrace.c ChangeLog, mtrace.c, mtrace.h: 2000-12-31 01:52:03 +00:00
mtrace.h ChangeLog, super.c: 2001-01-12 21:05:57 +00:00
pass1.c On-disk format definition for huge files 2006-11-11 06:32:03 -05:00
pass1b.c Fix loops over group descriptors to prevent 2**32-1 block number overflows 2006-09-12 14:55:22 -04:00
pass2.c Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
pass3.c Use a centrally stored current time for "now" which 2005-04-14 14:07:53 -04:00
pass4.c Detect overflows in loop counters 2006-08-30 02:16:55 -04:00
pass5.c Detect overflows in loop counters 2006-08-30 02:16:55 -04:00
problem.c Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
problem.h Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
problemP.h Add e2fsck problem handling to be configurable 2005-12-31 16:33:33 -05:00
prof_err.et Add the profile library code to e2fsck 2005-12-30 23:57:32 -05:00
profile.c Tighten up profile parsing code by combining functions 2006-03-22 10:01:24 -05:00
profile.h Add syntax error reporting to the profile library 2006-01-04 10:32:16 -05:00
profile_helpers.c Fix gcc -Wall warning in profile_helper.c 2006-01-05 01:29:50 -05:00
profile_helpers.h Simplify profile core functionality 2006-01-02 22:04:41 -05:00
recovery.c Fix printf types (FreeBSD has u_long for ntohl). 2006-05-30 16:26:29 +02:00
region.c This patch completes the initial extended attribute/ACL support for 2001-07-19 16:31:25 -04:00
rehash.c Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
revoke.c Fix gcc -Wall nits. 2002-10-13 23:56:28 -04:00
scantest.c Add Apple/Darwin patches. 2003-03-14 02:13:48 -05:00
super.c Add directory hashed signed/unsigned hint to superblock 2006-11-11 22:32:35 -05:00
swapfs.c Avoid some potential inode cache coherency problem caused by using the 2004-12-23 21:49:05 -05:00
unix.c Add checks to make sure inode counts don't overflow a 32-bit value 2006-09-12 14:56:17 -04:00
util.c Integrate code from Alex Thomas at Clusterfs to check extended attributes 2005-03-21 13:15:45 -05:00