linux-IllusionX/fs
Mark Fasheh e85b565233 [PATCH] move truncate_inode_pages() into ->delete_inode()
Allow file systems supporting ->delete_inode() to call
truncate_inode_pages() on their own.  OCFS2 wants this so it can query the
cluster before making a final decision on whether to wipe an inode from
disk or not.  In some corner cases an inode marked on the local node via
voting may not actually get orphaned.  A good example is node death before
the transaction moving the inode to the orphan dir commits to the journal.
Without this patch, the truncate_inode_pages() call in
generic_delete_inode() would discard valid data for such inodes.

During earlier discussion in the 2.6.13 merge plan thread, Christoph
Hellwig indicated that other file systems might also find this useful.

IMHO, the best solution would be to just allow ->drop_inode() to do the
cluster query but it seems that would require a substantial reworking of
that section of the code.  Assuming it is safe to call write_inode_now() in
ocfs2_delete_inode() for those inodes which won't actually get wiped, this
solution should get us by for now.

Trivial testing of this patch (and a related OCFS2 update) has shown this
to avoid the corruption I'm seeing.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Acked-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-09 13:57:26 -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] fs: convert kcalloc to kzalloc 2005-09-07 16:57:46 -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] fs: convert kcalloc to kzalloc 2005-09-07 16:57:46 -07:00
hfs [PATCH] hfs: NLS support 2005-09-07 16:57:50 -07:00
hfsplus [PATCH] Change HFS+ to not use ll_rw_block() 2005-09-07 16:57:56 -07:00
hostfs [PATCH] remove iattr.ia_attr_flags 2005-09-07 16:57:42 -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] Fix race in do_get_write_access() 2005-09-07 16:57:57 -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: 2.1.24 release and some minor final fixes. 2005-09-08 23:01:16 +01:00
openpromfs
partitions
proc [PATCH] remove duplicated code from proc and ptrace 2005-09-07 16:57:43 -07:00
qnx4
ramfs
reiserfs [PATCH] Change ll_rw_block() calls in Reiser 2005-09-07 16:57:56 -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] Change ll_rw_block() calls in UFS 2005-09-07 16:57:56 -07:00
vfat
xfs [XFS] Revert recent quota Makefile change, not in a fit state for merging. 2005-09-09 11:38:09 +10:00
aio.c [PATCH] uml: fixes performance regression in activate_mm and thus exec() 2005-09-05 00:06:21 -07:00
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf.c
binfmt_elf_fdpic.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] bogus cast in bio.c 2005-09-09 10:31:58 -07:00
block_dev.c
buffer.c [PATCH] Make ll_rw_block() wait for buffer lock 2005-09-07 16:57:55 -07:00
char_dev.c
compat.c [PATCH] remove duplicated sys_open32() code from 64bit archs 2005-09-07 16:57:43 -07:00
compat_ioctl.c
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
fcntl.c [PATCH] stale POSIX lock handling 2005-07-27 16:26:06 -07:00
fifo.c
file.c
file_table.c [PATCH] remove file.f_maxcount 2005-09-07 16:57:32 -07:00
filesystems.c
fs-writeback.c
inode.c [PATCH] move truncate_inode_pages() into ->delete_inode() 2005-09-09 13:57:26 -07:00
inotify.c [PATCH] inotify: fix event loss on hardlinked files 2005-09-07 16:57:39 -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 [PATCH] namei cleanup 2005-09-07 16:57:42 -07:00
namespace.c [PATCH] pivot_root() circular reference fix 2005-09-07 16:58:01 -07:00
nfsctl.c
open.c [PATCH] remove duplicated sys_open32() code from 64bit archs 2005-09-07 16:57:43 -07:00
pipe.c [PATCH] pipe: remove redundant fifo_poll abstraction 2005-09-07 16:57:35 -07:00
posix_acl.c
quota.c
quota_v1.c
quota_v2.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.c [PATCH] fsnotify: hook on removexattr, too 2005-09-07 16:57:27 -07:00
xattr_acl.c