linux/fs/ext3
Eric Sandeen d7dab39b6e ext3: return 32/64-bit dir name hash according to usage type
This is based on commit d1f5273e9a
ext4: return 32/64-bit dir name hash according to usage type
by Fan Yong <yong.fan@whamcloud.com>

Traditionally ext2/3/4 has returned a 32-bit hash value from llseek()
to appease NFSv2, which can only handle a 32-bit cookie for seekdir()
and telldir().  However, this causes problems if there are 32-bit hash
collisions, since the NFSv2 server can get stuck resending the same
entries from the directory repeatedly.

Allow ext3 to return a full 64-bit hash (both major and minor) for
telldir to decrease the chance of hash collisions.

This patch does implement a new ext3_dir_llseek op, because with 64-bit
hashes, nfs will attempt to seek to a hash "offset" which is much
larger than ext3's s_maxbytes.  So for dx dirs, we call
generic_file_llseek_size() with the appropriate max hash value as the
maximum seekable size.  Otherwise we just pass through to
generic_file_llseek().

Patch-updated-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
Patch-updated-by: Eric Sandeen <sandeen@redhat.com>
(blame us if something is not correct)

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
2012-05-15 23:34:39 +02:00
..
acl.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
acl.h fs: take the ACL checks to common code 2011-07-25 14:30:23 -04:00
balloc.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
bitmap.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
dir.c ext3: return 32/64-bit dir name hash according to usage type 2012-05-15 23:34:39 +02:00
ext3_jbd.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
ext3.h ext3: return 32/64-bit dir name hash according to usage type 2012-05-15 23:34:39 +02:00
file.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
fsync.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
hash.c ext3: return 32/64-bit dir name hash according to usage type 2012-05-15 23:34:39 +02:00
ialloc.c ext3: remove max_debt in find_group_orlov() 2012-04-11 11:12:44 +02:00
inode.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
ioctl.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
Kconfig ext3: default to ordered mode 2010-07-23 12:50:55 +02:00
Makefile [PATCH] ext3: uninline large functions 2006-12-07 08:39:35 -08:00
namei.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
namei.h
resize.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
super.c ext3: Remove i_mutex use from ext3_quota_write() 2012-05-15 23:34:37 +02:00
symlink.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
xattr_security.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
xattr_trusted.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
xattr_user.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
xattr.c ext3: move headers to fs/ext3/ 2012-03-31 16:03:16 -04:00
xattr.h fs/vfs/security: pass last path component to LSM on inode creation 2011-02-01 11:12:29 -05:00