open-unlink-f*syscall bug is well-known in 9p. We try to fix the bug in this patch set. I take Eric's and Greg's patches which constiute the 1/4 - 3/4 of this patch set as the main frame of the solution. In patch 4/4, I fix the fid race issue exists in Greg's patch.
change log: v1 to v2: (1) in patch 4/4: do fid refcounter down in the clunk helper. (2) int patch 4/4: remove the enum value denoting from which of the inode or dentry fids are allcated. Eric Van Hensbergen (1): fs/9p: fix create-unlink-getattr idiom Greg Kurz (1): fs/9p: search open fids first Jianyong Wu (2): fs/9p: track open fids 9p: fix race issue in fid contention. fs/9p/fid.c | 69 ++++++++++++++++++++++++++++++++++++++--- fs/9p/fid.h | 11 ++++++- fs/9p/vfs_dentry.c | 2 ++ fs/9p/vfs_dir.c | 6 +++- fs/9p/vfs_file.c | 1 + fs/9p/vfs_inode.c | 47 ++++++++++++++++++++++------ fs/9p/vfs_inode_dotl.c | 35 +++++++++++++++++---- fs/9p/vfs_super.c | 1 + fs/9p/xattr.c | 16 ++++++++-- include/net/9p/client.h | 7 +++++ net/9p/client.c | 14 ++++++--- 11 files changed, 179 insertions(+), 30 deletions(-) -- 2.17.1