aboutsummaryrefslogtreecommitdiffstats
path: root/fs/afs/super.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2007-04-26 18:59:35 -0400
committerDavid S. Miller <davem@davemloft.net>2007-04-26 18:59:35 -0400
commit260a980317dac80182dd76140cf67c6e81d6d3dd (patch)
tree84f3e919fd33be56aad4fc57f5cb844df1a6b952 /fs/afs/super.c
parentc35eccb1f614954b10cba3f74b7c301993b2f42e (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.c6
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;