OpenCloudOS-Kernel/fs/ext4
Eric Sandeen e8b96eb503 vfs: allow custom EOF in generic_file_llseek code
For ext3/4 htree directories, using the vfs llseek function with
SEEK_END goes to i_size like for any other file, but in reality
we want the maximum possible hash value.  Recent changes
in ext4 have cut & pasted generic_file_llseek() back into fs/ext4/dir.c,
but replicating this core code seems like a bad idea, especially
since the copy has already diverged from the vfs.

This patch updates generic_file_llseek_size to accept
both a custom maximum offset, and a custom EOF position.  With this
in place, ext4_dir_llseek can pass in the appropriate maximum hash
position for both maxsize and eof, and get what it wants.

As far as I know, this does not fix any bugs - nfs in the kernel
doesn't use SEEK_END, and I don't know of any user who does.  But
some ext4 folks seem keen on doing the right thing here, and I can't
really argue.

(Patch also fixes up some comments slightly)

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-07-23 00:00:15 +04:00
..
Kconfig ext4: load the crc32c driver if necessary 2012-04-29 18:27:10 -04:00
Makefile ext4: move ext4_ind_* functions from inode.c to indirect.c 2011-06-27 19:40:50 -04:00
acl.c switch posix_acl_equiv_mode() to umode_t * 2011-08-01 02:10:06 -04:00
acl.h fs: take the ACL checks to common code 2011-07-25 14:30:23 -04:00
balloc.c ext4: fix the free blocks calculation for ext3 file systems w/ uninit_bg 2012-06-07 18:56:06 -04:00
bitmap.c ext4: calculate and verify block bitmap checksum 2012-04-29 18:35:10 -04:00
block_validity.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
dir.c ext4: calculate and verify checksums of directory leaf blocks 2012-04-29 18:41:10 -04:00
ext4.h Ext4 updates for 3.5 2012-06-01 10:12:15 -07:00
ext4_extents.h ext4: verify and calculate checksums for extent tree blocks 2012-04-29 18:37:10 -04:00
ext4_jbd2.c ext4: calculate and verify superblock checksum 2012-04-29 18:29:10 -04:00
ext4_jbd2.h ext4: calculate and verify superblock checksum 2012-04-29 18:29:10 -04:00
extents.c ext4: hole-punch use truncate_pagecache_range 2012-06-01 00:15:28 -04:00
file.c vfs: allow custom EOF in generic_file_llseek code 2012-07-23 00:00:15 +04:00
fsync.c vfs: switch i_dentry/d_alias to hlist 2012-07-14 16:32:55 +04:00
hash.c ext4: return 32/64-bit dir name hash according to usage type 2012-03-18 22:44:40 -04:00
ialloc.c Ext4 updates for 3.5 2012-06-01 10:12:15 -07:00
indirect.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
inode.c Ext4 updates for 3.5 2012-06-01 10:12:15 -07:00
ioctl.c ext4: don't set i_flags in EXT4_IOC_SETFLAGS 2012-06-07 19:04:19 -04:00
mballoc.c ext4: remove mb_groups before tearing down the buddy_cache 2012-05-31 23:52:14 -04:00
mballoc.h ext4: remove EXT4_MB_{BITMAP,BUDDY} macros 2012-02-20 17:54:06 -05:00
migrate.c userns: Convert ext4 to user kuid/kgid where appropriate 2012-05-15 14:59:27 -07:00
mmp.c ext4: add checksums to the MMP block 2012-04-29 18:47:10 -04:00
move_extent.c ext4: add some tracepoints in ext4/extents.c 2011-09-09 19:18:51 -04:00
namei.c don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
page-io.c Revert "ext4: don't release page refs in ext4_end_bio()" 2012-03-29 17:00:56 -07:00
resize.c ext4: remove redundundant "(char *) bh->b_data" casts 2012-05-28 17:47:52 -04:00
super.c quota: Move quota syncing to ->sync_fs method 2012-07-22 23:58:34 +04:00
symlink.c ext4: symlink must be handled via filesystem specific operation 2010-05-16 02:00:00 -04:00
truncate.h ext4: move common truncate functions to header file 2011-06-27 19:16:04 -04:00
xattr.c ext4: Calculate and verify checksums of extended attribute blocks 2012-04-29 18:43:10 -04:00
xattr.h ext4: change on-disk layout to support extended metadata checksumming 2012-04-29 18:23:10 -04:00
xattr_security.c Merge branch 'for_linus' into for_linus_merged 2012-01-10 11:54:07 -05:00
xattr_trusted.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00