aboutsummaryrefslogtreecommitdiffstats
path: root/fs/afs/volume.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/volume.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/volume.c')
-rw-r--r--fs/afs/volume.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/afs/volume.c b/fs/afs/volume.c
index 15e13678c216..dd160cada45d 100644
--- a/fs/afs/volume.c
+++ b/fs/afs/volume.c
@@ -295,6 +295,7 @@ struct afs_server *afs_volume_pick_fileserver(struct afs_vnode *vnode)
295 * - releases the ref on the server struct that was acquired by picking 295 * - releases the ref on the server struct that was acquired by picking
296 * - records result of using a particular server to access a volume 296 * - records result of using a particular server to access a volume
297 * - return 0 to try again, 1 if okay or to issue error 297 * - return 0 to try again, 1 if okay or to issue error
298 * - the caller must release the server struct if result was 0
298 */ 299 */
299int afs_volume_release_fileserver(struct afs_vnode *vnode, 300int afs_volume_release_fileserver(struct afs_vnode *vnode,
300 struct afs_server *server, 301 struct afs_server *server,
@@ -312,7 +313,8 @@ int afs_volume_release_fileserver(struct afs_vnode *vnode,
312 case 0: 313 case 0:
313 server->fs_act_jif = jiffies; 314 server->fs_act_jif = jiffies;
314 server->fs_state = 0; 315 server->fs_state = 0;
315 break; 316 _leave("");
317 return 1;
316 318
317 /* the fileserver denied all knowledge of the volume */ 319 /* the fileserver denied all knowledge of the volume */
318 case -ENOMEDIUM: 320 case -ENOMEDIUM:
@@ -377,14 +379,12 @@ int afs_volume_release_fileserver(struct afs_vnode *vnode,
377 server->fs_act_jif = jiffies; 379 server->fs_act_jif = jiffies;
378 case -ENOMEM: 380 case -ENOMEM:
379 case -ENONET: 381 case -ENONET:
380 break; 382 /* tell the caller to accept the result */
383 afs_put_server(server);
384 _leave(" [local failure]");
385 return 1;
381 } 386 }
382 387
383 /* tell the caller to accept the result */
384 afs_put_server(server);
385 _leave("");
386 return 1;
387
388 /* tell the caller to loop around and try the next server */ 388 /* tell the caller to loop around and try the next server */
389try_next_server_upw: 389try_next_server_upw:
390 up_write(&volume->server_sem); 390 up_write(&volume->server_sem);