diff options
author | David Howells <dhowells@redhat.com> | 2007-04-26 18:59:35 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-04-26 18:59:35 -0400 |
commit | 260a980317dac80182dd76140cf67c6e81d6d3dd (patch) | |
tree | 84f3e919fd33be56aad4fc57f5cb844df1a6b952 /fs/afs/super.c | |
parent | c35eccb1f614954b10cba3f74b7c301993b2f42e (diff) |
[AFS]: Add "directory write" support.
Add support for the create, link, symlink, unlink, mkdir, rmdir and
rename VFS operations to the in-kernel AFS filesystem.
Also:
(1) Fix dentry and inode revalidation. d_revalidate should only look at
state of the dentry. Revalidation of the contents of an inode pointed to
by a dentry is now separate.
(2) Fix afs_lookup() to hash negative dentries as well as positive ones.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/afs/super.c')
-rw-r--r-- | fs/afs/super.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/afs/super.c b/fs/afs/super.c index 497350a5463b..cebd03c91f57 100644 --- a/fs/afs/super.c +++ b/fs/afs/super.c | |||
@@ -331,7 +331,7 @@ static int afs_fill_super(struct super_block *sb, void *data) | |||
331 | fid.vid = as->volume->vid; | 331 | fid.vid = as->volume->vid; |
332 | fid.vnode = 1; | 332 | fid.vnode = 1; |
333 | fid.unique = 1; | 333 | fid.unique = 1; |
334 | inode = afs_iget(sb, params->key, &fid); | 334 | inode = afs_iget(sb, params->key, &fid, NULL, NULL); |
335 | if (IS_ERR(inode)) | 335 | if (IS_ERR(inode)) |
336 | goto error_inode; | 336 | goto error_inode; |
337 | 337 | ||
@@ -473,9 +473,9 @@ static void afs_i_init_once(void *_vnode, struct kmem_cache *cachep, | |||
473 | inode_init_once(&vnode->vfs_inode); | 473 | inode_init_once(&vnode->vfs_inode); |
474 | init_waitqueue_head(&vnode->update_waitq); | 474 | init_waitqueue_head(&vnode->update_waitq); |
475 | mutex_init(&vnode->permits_lock); | 475 | mutex_init(&vnode->permits_lock); |
476 | mutex_init(&vnode->validate_lock); | ||
476 | spin_lock_init(&vnode->lock); | 477 | spin_lock_init(&vnode->lock); |
477 | INIT_WORK(&vnode->cb_broken_work, afs_broken_callback_work); | 478 | INIT_WORK(&vnode->cb_broken_work, afs_broken_callback_work); |
478 | mutex_init(&vnode->cb_broken_lock); | ||
479 | } | 479 | } |
480 | } | 480 | } |
481 | 481 | ||
@@ -497,7 +497,7 @@ static struct inode *afs_alloc_inode(struct super_block *sb) | |||
497 | 497 | ||
498 | vnode->volume = NULL; | 498 | vnode->volume = NULL; |
499 | vnode->update_cnt = 0; | 499 | vnode->update_cnt = 0; |
500 | vnode->flags = 0; | 500 | vnode->flags = 1 << AFS_VNODE_UNSET; |
501 | vnode->cb_promised = false; | 501 | vnode->cb_promised = false; |
502 | 502 | ||
503 | return &vnode->vfs_inode; | 503 | return &vnode->vfs_inode; |