kernel_optimize_test/fs/xfs
Barry Naujok 384f3ced07 [XFS] Return case-insensitive match for dentry cache
This implements the code to store the actual filename found during a
lookup in the dentry cache and to avoid multiple entries in the dcache
pointing to the same inode.

To avoid polluting the dcache, we implement a new directory inode
operations for lookup. xfs_vn_ci_lookup() stores the correct case name in
the dcache.

The "actual name" is only allocated and returned for a case- insensitive
match and not an actual match.

Another unusual interaction with the dcache is not storing negative
dentries like other filesystems doing a d_add(dentry, NULL) when an ENOENT
is returned. During the VFS lookup, if a dentry returned has no inode,
dput is called and ENOENT is returned. By not doing a d_add, this actually
removes it completely from the dcache to be reused. create/rename have to
be modified to support unhashed dentries being passed in.

SGI-PV: 981521
SGI-Modid: xfs-linux-melb:xfs-kern:31208a

Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
2008-07-28 16:58:40 +10:00
..
linux-2.6 [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
quota [XFS] Remove unused Falgs parameter from xfs_qm_dqpurge() 2008-07-28 16:58:08 +10:00
support [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
Kconfig [XFS] allow enabling CONFIG_XFS_DEBUG 2008-04-29 16:07:48 +10:00
Makefile [XFS] Added quota targets and removed dmapi directory 2008-02-18 13:06:17 +11:00
xfs_acl.c [XFS] Cleanup xfs_attr a bit with xfs_name and remove cred 2008-04-29 15:54:55 +10:00
xfs_acl.h [XFS] use generic_permission 2008-02-07 18:22:38 +11:00
xfs_ag.h
xfs_alloc_btree.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_alloc_btree.h
xfs_alloc.c [XFS] fix logic error in xfs_alloc_ag_vextent_near() 2008-04-18 12:03:02 +10:00
xfs_alloc.h
xfs_arch.h xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_attr_leaf.c [XFS] Add op_flags field and helpers to xfs_da_args 2008-07-28 16:58:37 +10:00
xfs_attr_leaf.h
xfs_attr_sf.h [XFS] 2008-07-28 16:58:35 +10:00
xfs_attr.c [XFS] Add op_flags field and helpers to xfs_da_args 2008-07-28 16:58:37 +10:00
xfs_attr.h [XFS] Kill attr_capable checks as already done in xattr_permission. 2008-07-28 16:58:13 +10:00
xfs_bit.c [XFS] Undo bit ops cleanup mod due to regression on 32-bit powermac 2008-02-26 17:05:44 +11:00
xfs_bit.h [XFS] Undo bit ops cleanup mod due to regression on 32-bit powermac 2008-02-26 17:05:44 +11:00
xfs_bmap_btree.c [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_bmap_btree.h [XFS] remove shouting-indirection macros from xfs_sb.h 2008-04-10 16:24:45 +10:00
xfs_bmap.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_bmap.h [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_btree.c
xfs_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_buf_item.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_buf_item.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_clnt.h [XFS] Fix up noattr2 so that it will properly update the versionnum and 2008-07-28 16:58:05 +10:00
xfs_da_btree.c [XFS] Add op_flags field and helpers to xfs_da_args 2008-07-28 16:58:37 +10:00
xfs_da_btree.h [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dfrag.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_dfrag.h
xfs_dinode.h [XFS] Remove CFORK macros and use code directly in IFORK and DFORK macros. 2008-02-07 18:19:24 +11:00
xfs_dir2_block.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dir2_block.h
xfs_dir2_data.c [XFS] Name operation vector for hash and compare 2008-07-28 16:58:36 +10:00
xfs_dir2_data.h
xfs_dir2_leaf.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dir2_leaf.h
xfs_dir2_node.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dir2_node.h
xfs_dir2_sf.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dir2_sf.h
xfs_dir2_trace.c [XFS] Add op_flags field and helpers to xfs_da_args 2008-07-28 16:58:37 +10:00
xfs_dir2_trace.h
xfs_dir2.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dir2.h [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dmapi.h
xfs_dmops.c
xfs_error.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_error.h [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
xfs_extfree_item.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_extfree_item.h
xfs_filestream.c [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_filestream.h
xfs_fs.h [XFS] fix 32-bit compat ioctls for GETXFLAGS, SETXFLAGS, GETVERSION 2008-02-07 18:13:17 +11:00
xfs_fsops.c [XFS] Don't double count reserved block changes on UP. 2008-04-29 15:58:27 +10:00
xfs_fsops.h
xfs_ialloc_btree.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_ialloc_btree.h [XFS] kill XFS_INOBT_IS_FREE_DISK 2008-02-07 18:12:41 +11:00
xfs_ialloc.c [XFS] Don't initialise new inode generation numbers to zero 2008-04-29 15:58:56 +10:00
xfs_ialloc.h
xfs_iget.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_imap.h
xfs_inode_item.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_inode_item.h [XFS] Use xfs_inode_clean() in more places 2008-04-18 11:37:51 +10:00
xfs_inode.c [XFS] kill xfs_igrow_start and xfs_igrow_finish 2008-07-28 16:58:18 +10:00
xfs_inode.h [XFS] kill xfs_igrow_start and xfs_igrow_finish 2008-07-28 16:58:18 +10:00
xfs_inum.h
xfs_iomap.c [XFS] Fix check for block zero access in xfs_write_iomap_allocate() 2008-04-29 15:58:40 +10:00
xfs_iomap.h
xfs_itable.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_itable.h
xfs_log_priv.h [XFS] Convert l_flushsema to a sv_t 2008-07-28 16:58:12 +10:00
xfs_log_recover.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_log_recover.h
xfs_log.c [XFS] Convert l_flushsema to a sv_t 2008-07-28 16:58:12 +10:00
xfs_log.h [XFS] Sanitise xfs_log_force error checking. 2008-04-18 12:02:20 +10:00
xfs_mount.c [XFS] kill xfs_mount_init 2008-07-28 16:58:29 +10:00
xfs_mount.h [XFS] Name operation vector for hash and compare 2008-07-28 16:58:36 +10:00
xfs_mru_cache.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_mru_cache.h
xfs_qmops.c
xfs_quota.h
xfs_refcache.h
xfs_rename.c [XFS] kill usesless IHOLD calls in xfs_rename 2008-04-29 15:54:24 +10:00
xfs_rtalloc.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_rtalloc.h [XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config 2008-02-07 18:16:43 +11:00
xfs_rw.c [XFS] Sanitise xfs_log_force error checking. 2008-04-18 12:02:20 +10:00
xfs_rw.h [XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config 2008-02-07 18:16:43 +11:00
xfs_sb.h [XFS] Fix up noattr2 so that it will properly update the versionnum and 2008-07-28 16:58:05 +10:00
xfs_trans_ail.c [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_trans_buf.c [XFS] Ensure errors from xfs_bdstrat() are correctly checked. 2008-04-18 12:00:24 +10:00
xfs_trans_extfree.c
xfs_trans_inode.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_trans_item.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_trans_priv.h [XFS] Move AIL pushing into it's own thread 2008-02-07 18:22:51 +11:00
xfs_trans_space.h
xfs_trans.c [XFS] Remove unused arg from kmem_free() 2008-07-28 16:58:07 +10:00
xfs_trans.h [XFS] Replace custom AIL linked-list code with struct list_head 2008-04-18 11:41:57 +10:00
xfs_types.h [XFS] remove bhv_vname_t and xfs_rename code 2008-04-18 12:00:12 +10:00
xfs_utils.c [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_utils.h [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_vfsops.c [XFS] merge xfs_mount into xfs_fs_fill_super 2008-07-28 16:58:21 +10:00
xfs_vfsops.h [XFS] merge xfs_mount into xfs_fs_fill_super 2008-07-28 16:58:21 +10:00
xfs_vnodeops.c [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_vnodeops.h [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs.h [XFS] Fix broken HAVE_SPLICE removal commit. 2008-04-29 15:57:49 +10:00