afs: Implement sillyrename for unlink and rename
Implement sillyrename for AFS unlink and rename, using the NFS variant implementation as a basis. Note that the asynchronous file locking extender/releaser has to be notified with a state change to stop it complaining if there's a race between that and the actual file deletion. A tracepoint, afs_silly_rename, is also added to note the silly rename and the cleanup. The afs_edit_dir tracepoint is given some extra reason indicators and the afs_flock_ev tracepoint is given a silly-delete file lock cancellation indicator. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -45,7 +45,7 @@ struct file_system_type afs_fs_type = {
|
||||
.init_fs_context = afs_init_fs_context,
|
||||
.parameters = &afs_fs_parameters,
|
||||
.kill_sb = afs_kill_super,
|
||||
.fs_flags = 0,
|
||||
.fs_flags = FS_RENAME_DOES_D_MOVE,
|
||||
};
|
||||
MODULE_ALIAS_FS("afs");
|
||||
|
||||
@@ -656,6 +656,8 @@ static struct inode *afs_alloc_inode(struct super_block *sb)
|
||||
vnode->cb_type = 0;
|
||||
vnode->lock_state = AFS_VNODE_LOCK_NONE;
|
||||
|
||||
init_rwsem(&vnode->rmdir_lock);
|
||||
|
||||
_leave(" = %p", &vnode->vfs_inode);
|
||||
return &vnode->vfs_inode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user