Centos-kernel-stream-9/fs
Dave Chinner 250df6ed27 fs: protect inode->i_state with inode->i_lock
Protect inode state transitions and validity checks with the
inode->i_lock. This enables us to make inode state transitions
independently of the inode_lock and is the first step to peeling
away the inode_lock from the code.

This requires that __iget() is done atomically with i_state checks
during list traversals so that we don't race with another thread
marking the inode I_FREEING between the state check and grabbing the
reference.

Also remove the unlock_new_inode() memory barrier optimisation
required to avoid taking the inode_lock when clearing I_NEW.
Simplify the code by simply taking the inode->i_lock around the
state change and wakeup. Because the wakeup is no longer tricky,
remove the wake_up_inode() function and open code the wakeup where
necessary.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-24 21:16:31 -04:00
..
9p userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
adfs fs/adfs/adfs.h: fix unsigned comparison 2011-03-23 19:46:09 -07:00
affs
afs
autofs4 autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd() 2011-03-24 14:54:35 -04:00
befs
bfs
btrfs userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
cachefiles
ceph
cifs
coda
configfs
cramfs
debugfs
devpts
dlm
ecryptfs
efs
exofs
exportfs
ext2 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
ext3 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
ext4 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
fat
freevxfs
fscache
fuse
gfs2 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
hfs
hfsplus userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jbd2
jffs2 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
jfs userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
lockd
logfs userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
minix bitops: remove minix bitops from asm/bitops.h 2011-03-23 19:46:22 -07:00
ncpfs
nfs
nfs_common
nfsd
nilfs2 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
nls
notify fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
ntfs
ocfs2 userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
omfs
openpromfs
partitions
proc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2011-03-23 20:51:42 -07:00
pstore
qnx4
quota fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
ramfs
reiserfs userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
romfs
squashfs
sysfs
sysv
ubifs userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
udf udf: use little-endian bitops 2011-03-23 19:46:19 -07:00
ufs ufs: use little-endian bitops 2011-03-23 19:46:19 -07:00
xfs
Kconfig
Kconfig.binfmt
Makefile
aio.c
anon_inodes.c
attr.c userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
bad_inode.c
binfmt_aout.c
binfmt_elf.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2011-03-23 20:51:42 -07:00
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c
block_dev.c fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
buffer.c fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
char_dev.c
compat.c
compat_binfmt_elf.c
compat_ioctl.c
dcache.c
dcookies.c
direct-io.c
drop_caches.c fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
eventfd.c
eventpoll.c
exec.c
fcntl.c userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
fhandle.c
fifo.c
file.c
file_table.c
filesystems.c
fs-writeback.c fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
fs_struct.c
generic_acl.c userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
inode.c fs: protect inode->i_state with inode->i_lock 2011-03-24 21:16:31 -04:00
internal.h
ioctl.c
ioprio.c
libfs.c
locks.c
mbcache.c
mpage.c
namei.c vfs - check non-mountpoint dentry might block in __follow_mount_rcu() 2011-03-24 14:24:32 -04:00
namespace.c
nfsctl.c
no-block.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
statfs.c
super.c
sync.c
timerfd.c
utimes.c userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
xattr.c userns: rename is_owner_or_cap to inode_owner_or_capable 2011-03-23 19:47:13 -07:00
xattr_acl.c