1
linux/fs
Dave Johnson a97c9bf33f [PATCH] fix cramfs making duplicate entries in inode cache
Every time cramfs_lookup() is called to lookup and inode for a dentry,
get_cramfs_inode() will allocate a new inode without checking to see if that
inode already exists in the inode cache.

This is fine the first time, but if the dentry cache entry(ies) associated
with that inode are aged out, but the inode entry is not aged out (which can
be quite common if the inode has buffer cache linked to it), cramfs_lookup()
will be called again and another inode will be allocated and added to the
inode cache creating a duplicate in the inode cache.

The big issue here is that the buffers associated with each inode cache entry
are not shared between the duplicates!

The older inode entries are now orphaned as no dentry points to it and won't
be freed until the buffer cache assoicated with them are first freed.  The
newest entry will have to create all new buffer cache for each part of its
file as the old buffer cache is now orphaned as well.

Patch below fixes this by making get_cramfs_inode() use the inode cache before
blindly creating a new entry every time.  This eliminates the duplicate inodes
and duplicate buffer cache.

Cc: Phillip Lougher <phillip@lougher.demon.co.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-07 16:57:33 -07:00
..
adfs [ARM] fs/adfs/adfs.h: "extern inline" doesn't make sense 2005-08-20 17:20:28 +01:00
affs
afs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
autofs Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
autofs4 [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
befs befs: fix up missed follow_link declaration change 2005-08-20 13:20:01 -07:00
bfs
cifs [PATCH] Fix oops in fs/locks.c on close of file with pending locks 2005-08-26 16:05:35 -07:00
coda
cramfs [PATCH] fix cramfs making duplicate entries in inode cache 2005-09-07 16:57:33 -07:00
debugfs
devfs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
devpts [PATCH] Generic VFS fallback for security xattrs 2005-09-05 00:05:52 -07:00
efs
exportfs
ext2 [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
ext3 [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
fat [PATCH] Speedup FAT filesystem directory reads 2005-09-07 16:57:26 -07:00
freevxfs [PATCH] freevxfs: fix breakage introduced by symlink fixes 2005-08-20 14:30:50 -07:00
hfs [PATCH] hfs: don't reference missing page 2005-08-01 21:38:00 -07:00
hfsplus [PATCH] hfs: don't reference missing page 2005-08-01 21:38:00 -07:00
hostfs [PATCH] uml: implement hostfs syncing 2005-07-28 21:46:05 -07:00
hpfs
hppfs [PATCH] hppfs: fix symlink error path 2005-08-26 11:39:19 -07:00
hugetlbfs
isofs Check input buffer size in zisofs 2005-08-06 09:42:06 -07:00
jbd [PATCH] fs/jbd/: cleanups 2005-09-07 16:57:19 -07:00
jffs [PATCH] jffs/jffs2: remove wrong function prototypes 2005-09-07 16:57:29 -07:00
jffs2 [PATCH] jffs/jffs2: remove wrong function prototypes 2005-09-07 16:57:29 -07:00
jfs [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts 2005-09-07 16:57:23 -07:00
lockd [PATCH] NFS: procfs/sysctl interfaces for lockd do not work on x86_64 2005-07-13 11:25:24 -07:00
minix
msdos
ncpfs
nfs [PATCH] NFSv4: unbalanced BKL in nfs_atomic_lookup() 2005-08-19 18:44:56 -07:00
nfs_common [PATCH] NFS: Ensure ACL xdr code doesn't overflow. 2005-08-16 08:52:11 -07:00
nfsd [PATCH] sunrpc: cache_register can use wrong module reference 2005-09-07 16:57:25 -07:00
nls
ntfs NTFS: Complete the previous fix for the unset device when mapping buffers 2005-08-16 19:42:56 +01:00
openpromfs
partitions
proc [PATCH] proc: link count fix 2005-09-07 16:57:28 -07:00
qnx4
ramfs
reiserfs [PATCH] reiserfs+acl+quota deadlock fix 2005-08-18 12:53:57 -07:00
relayfs [PATCH] relayfs 2005-09-07 16:57:18 -07:00
romfs
smbfs [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
sysfs [PATCH] Fix oops in sysfs_hash_and_remove_file() 2005-08-26 19:37:13 -07:00
sysv [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
udf
ufs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
umsdos
vfat
xfs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
aio.c [PATCH] uml: fixes performance regression in activate_mm and thus exec() 2005-09-05 00:06:21 -07:00
attr.c [PATCH] inotify 2005-07-12 20:38:38 -07:00
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c
binfmt_em86.c
binfmt_flat.c [PATCH] uclinux: use MAP_PRIVATE when mmaping code regions in flat binary loader 2005-09-02 00:57:31 -07:00
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio.c [PATCH] kill bio->bi_set 2005-09-07 16:57:20 -07:00
block_dev.c
buffer.c
char_dev.c [PATCH] cdev: cdev_put oops 2005-07-12 16:01:02 -07:00
compat_ioctl.c
compat.c [PATCH] remove register_ioctl32_conversion and unregister_ioctl32_conversion 2005-09-07 16:57:20 -07:00
dcache.c [PATCH] fsnotify_name/inoderemove 2005-08-08 11:53:47 -07:00
dcookies.c
direct-io.c
dnotify.c
dquot.c
eventpoll.c
exec.c [PATCH] reset real_timer target on exec leader change 2005-07-12 16:01:01 -07:00
fcntl.c [PATCH] stale POSIX lock handling 2005-07-27 16:26:06 -07:00
fifo.c
file_table.c [PATCH] remove file.f_maxcount 2005-09-07 16:57:32 -07:00
file.c
filesystems.c
fs-writeback.c
inode.c [PATCH] fs: remove redundant timespec_equal test in update_atime() 2005-09-07 16:57:31 -07:00
inotify.c [PATCH] inotify speedup 2005-09-07 16:57:19 -07:00
ioctl.c
ioprio.c Don't allow normal users to set idle IO priority 2005-08-20 18:51:29 -07:00
Kconfig [PATCH] fs/Kconfig: quota help text updates 2005-09-07 16:57:29 -07:00
Kconfig.binfmt
libfs.c
locks.c [PATCH] stale POSIX lock handling 2005-07-27 16:26:06 -07:00
Makefile [PATCH] relayfs 2005-09-07 16:57:18 -07:00
mbcache.c [PATCH] mbcache: Remove unused mb_cache_shrink parameter 2005-07-27 16:26:07 -07:00
mpage.c
namei.c Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
namespace.c [PATCH] namespace.c: fix bind mount from foreign namespace 2005-08-07 10:00:38 -07:00
nfsctl.c
open.c [PATCH] inotify 2005-07-12 20:38:38 -07:00
pipe.c
posix_acl.c
quota_v1.c
quota_v2.c
quota.c
read_write.c [PATCH] remove file.f_maxcount 2005-09-07 16:57:32 -07:00
readdir.c
select.c
seq_file.c
stat.c
super.c
xattr_acl.c
xattr.c [PATCH] fsnotify: hook on removexattr, too 2005-09-07 16:57:27 -07:00