linux_dsm_epyc7002/fs
Chuck Lever eb64cf964d NFS: State reclaim clears OPEN and LOCK state
The "state->flags & flags" test in nfs41_check_expired_stateid()
allows the state manager to squelch a TEST_STATEID operation when
it is known for sure that a state ID is no longer valid.  If the
lease was purged, for example, the client already knows that state
ID is now defunct.

But open recovery is still needed for that inode.

To force a call to nfs4_open_expired(), change the default return
value for nfs41_check_expired_stateid() to force open recovery, and
the default return value for nfs41_check_locks() to force lock
recovery, if the requested flags are clear.  Fix suggested by Bryan
Schumaker.

Also, the presence of a delegation state ID must not prevent normal
open recovery.  The delegation state ID must be cleared if it was
revoked, but once cleared I don't think it's presence or absence has
any bearing on whether open recovery is still needed.  So the logic
is adjusted to ignore the TEST_STATEID result for the delegation
state ID.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2012-07-16 14:48:53 -04:00
..
9p VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
adfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
affs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
afs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
autofs4 stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
befs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
bfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
btrfs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
cachefiles don't pass nameidata * to vfs_create() 2012-07-14 16:34:50 +04:00
ceph VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
cifs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
coda don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
configfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
cramfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
debugfs debugfs: get rid of useless arguments to debugfs_{mkdir,symlink} 2012-07-14 16:35:30 +04:00
devpts VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
dlm
ecryptfs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
efs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
exofs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
exportfs vfs: switch i_dentry/d_alias to hlist 2012-07-14 16:32:55 +04:00
ext2 don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ext3 don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ext4 don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
fat don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
freevxfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
fscache
fuse don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
gfs2 VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
hfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
hfsplus don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
hostfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
hpfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
hppfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
hugetlbfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
isofs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
jbd
jbd2
jffs2 don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
jfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
lockd
logfs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
minix don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ncpfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
nfs NFS: State reclaim clears OPEN and LOCK state 2012-07-16 14:48:53 -04:00
nfs_common
nfsd don't pass nameidata * to vfs_create() 2012-07-14 16:34:50 +04:00
nilfs2 VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
nls
notify vfs: switch i_dentry/d_alias to hlist 2012-07-14 16:32:55 +04:00
ntfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
ocfs2 don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
omfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
openpromfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
proc VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
pstore staging tree fixes for 3.5-rc4 2012-06-20 15:15:03 -07:00
qnx4 stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
qnx6 stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
quota
ramfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
reiserfs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
romfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
squashfs stop passing nameidata to ->lookup() 2012-07-14 16:34:32 +04:00
sysfs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
sysv don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ubifs VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
udf don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
ufs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
xfs don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
aio.c
anon_inodes.c
attr.c notify_change(): check that i_mutex is held 2012-07-14 16:35:42 +04:00
bad_inode.c don't pass nameidata to ->create() 2012-07-14 16:34:47 +04:00
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c
block_dev.c
buffer.c block: fix infinite loop in __getblk_slow 2012-07-13 08:36:35 -07:00
char_dev.c
compat_binfmt_elf.c
compat_ioctl.c
compat.c
dcache.c __d_unalias() should refuse to move mountpoints 2012-07-14 16:35:15 +04:00
dcookies.c
direct-io.c fs/direct-io.c: adjust suspicious bit operation 2012-07-14 16:32:46 +04:00
drop_caches.c
eventfd.c
eventpoll.c
exec.c mm: correctly synchronize rss-counters at exit/exec 2012-06-20 14:39:36 -07:00
fcntl.c
fhandle.c
fifo.c
file_table.c mark_files_ro(): don't bother with mntget/mntput 2012-07-14 16:35:46 +04:00
file.c
filesystems.c
fs_struct.c get rid of ->mnt_longterm 2012-07-14 16:32:47 +04:00
fs-writeback.c writeback: Fix lock imbalance in writeback_sb_inodes() 2012-06-09 08:32:15 +09:00
generic_acl.c
inode.c vfs: switch i_dentry/d_alias to hlist 2012-07-14 16:32:55 +04:00
internal.h kill struct opendata 2012-07-14 16:33:39 +04:00
ioctl.c
ioprio.c
Kconfig
Kconfig.binfmt
libfs.c VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
locks.c Remove easily user-triggerable BUG from generic_setlease 2012-07-13 10:50:23 -07:00
Makefile
mbcache.c
mount.h get rid of magic in proc_namespace.c 2012-07-14 16:32:48 +04:00
mpage.c
namei.c VFS: Comment mount following code 2012-07-14 16:38:32 +04:00
namespace.c VFS: Comment mount following code 2012-07-14 16:38:32 +04:00
no-block.c
open.c VFS: Make chown() and lchown() call fchownat() 2012-07-14 16:35:54 +04:00
pipe.c
pnode.c VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors 2012-07-14 16:37:27 +04:00
pnode.h
posix_acl.c
proc_namespace.c get rid of magic in proc_namespace.c 2012-07-14 16:32:48 +04:00
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c splice: fix racy pipe->buffers uses 2012-06-13 21:16:42 +02:00
stack.c
stat.c
statfs.c
super.c VFS: Pass mount flags to sget() 2012-07-14 16:38:34 +04:00
sync.c
timerfd.c
utimes.c
xattr_acl.c
xattr.c