diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-01-12 17:10:55 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-01-12 20:03:43 -0500 |
commit | 98cd3fb0a2c376f583216ec35f66175a71b2ef67 (patch) | |
tree | de6758d61ae9d6241aeca252f28fb906299f1c4b /fs | |
parent | c74a1cbb3cac348f276fabc381758f5b0b4713b2 (diff) |
switch 9p
here we actually *want* ->d_op for root; setting it allows to get rid
of kludge in v9fs_kill_super() since now we have proper ->d_release()
for root and don't need to call it manually.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/9p/v9fs_vfs.h | 1 | ||||
-rw-r--r-- | fs/9p/vfs_dentry.c | 2 | ||||
-rw-r--r-- | fs/9p/vfs_inode.c | 5 | ||||
-rw-r--r-- | fs/9p/vfs_super.c | 8 |
4 files changed, 6 insertions, 10 deletions
diff --git a/fs/9p/v9fs_vfs.h b/fs/9p/v9fs_vfs.h index bab0eac873f4..b789f8e597ec 100644 --- a/fs/9p/v9fs_vfs.h +++ b/fs/9p/v9fs_vfs.h | |||
@@ -59,7 +59,6 @@ void v9fs_stat2inode_dotl(struct p9_stat_dotl *, struct inode *); | |||
59 | int v9fs_dir_release(struct inode *inode, struct file *filp); | 59 | int v9fs_dir_release(struct inode *inode, struct file *filp); |
60 | int v9fs_file_open(struct inode *inode, struct file *file); | 60 | int v9fs_file_open(struct inode *inode, struct file *file); |
61 | void v9fs_inode2stat(struct inode *inode, struct p9_wstat *stat); | 61 | void v9fs_inode2stat(struct inode *inode, struct p9_wstat *stat); |
62 | void v9fs_dentry_release(struct dentry *); | ||
63 | int v9fs_uflags2omode(int uflags, int extended); | 62 | int v9fs_uflags2omode(int uflags, int extended); |
64 | 63 | ||
65 | ssize_t v9fs_file_readn(struct file *, char *, char __user *, u32, u64); | 64 | ssize_t v9fs_file_readn(struct file *, char *, char __user *, u32, u64); |
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c index 466d2a4fc5cb..233b7d4ffe5e 100644 --- a/fs/9p/vfs_dentry.c +++ b/fs/9p/vfs_dentry.c | |||
@@ -86,7 +86,7 @@ static int v9fs_cached_dentry_delete(const struct dentry *dentry) | |||
86 | * | 86 | * |
87 | */ | 87 | */ |
88 | 88 | ||
89 | void v9fs_dentry_release(struct dentry *dentry) | 89 | static void v9fs_dentry_release(struct dentry *dentry) |
90 | { | 90 | { |
91 | struct v9fs_dentry *dent; | 91 | struct v9fs_dentry *dent; |
92 | struct p9_fid *temp, *current_fid; | 92 | struct p9_fid *temp, *current_fid; |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 5076eeb95502..b76a40bdf4c2 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
@@ -699,11 +699,6 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, | |||
699 | goto error_iput; | 699 | goto error_iput; |
700 | 700 | ||
701 | inst_out: | 701 | inst_out: |
702 | if (v9ses->cache) | ||
703 | d_set_d_op(dentry, &v9fs_cached_dentry_operations); | ||
704 | else | ||
705 | d_set_d_op(dentry, &v9fs_dentry_operations); | ||
706 | |||
707 | d_add(dentry, inode); | 702 | d_add(dentry, inode); |
708 | return NULL; | 703 | return NULL; |
709 | 704 | ||
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c index c55c614500ad..dbaabe3b8131 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c | |||
@@ -141,6 +141,11 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags, | |||
141 | } | 141 | } |
142 | v9fs_fill_super(sb, v9ses, flags, data); | 142 | v9fs_fill_super(sb, v9ses, flags, data); |
143 | 143 | ||
144 | if (v9ses->cache) | ||
145 | sb->s_d_op = &v9fs_cached_dentry_operations; | ||
146 | else | ||
147 | sb->s_d_op = &v9fs_dentry_operations; | ||
148 | |||
144 | inode = v9fs_get_inode(sb, S_IFDIR | mode); | 149 | inode = v9fs_get_inode(sb, S_IFDIR | mode); |
145 | if (IS_ERR(inode)) { | 150 | if (IS_ERR(inode)) { |
146 | retval = PTR_ERR(inode); | 151 | retval = PTR_ERR(inode); |
@@ -217,9 +222,6 @@ static void v9fs_kill_super(struct super_block *s) | |||
217 | 222 | ||
218 | P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s); | 223 | P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s); |
219 | 224 | ||
220 | if (s->s_root) | ||
221 | v9fs_dentry_release(s->s_root); /* clunk root */ | ||
222 | |||
223 | kill_anon_super(s); | 225 | kill_anon_super(s); |
224 | 226 | ||
225 | v9fs_session_cancel(v9ses); | 227 | v9fs_session_cancel(v9ses); |