Lines Matching refs:vnode

107 void afs_clear_permits(struct afs_vnode *vnode)  in afs_clear_permits()  argument
111 spin_lock(&vnode->lock); in afs_clear_permits()
112 permits = rcu_dereference_protected(vnode->permit_cache, in afs_clear_permits()
113 lockdep_is_held(&vnode->lock)); in afs_clear_permits()
114 RCU_INIT_POINTER(vnode->permit_cache, NULL); in afs_clear_permits()
115 spin_unlock(&vnode->lock); in afs_clear_permits()
143 void afs_cache_permit(struct afs_vnode *vnode, struct key *key, in afs_cache_permit() argument
153 vnode->fid.vid, vnode->fid.vnode, key_serial(key), caller_access); in afs_cache_permit()
160 permits = rcu_dereference(vnode->permit_cache); in afs_cache_permit()
173 if (afs_cb_is_broken(cb_break, vnode, in afs_cache_permit()
174 rcu_dereference(vnode->cb_interest))) { in afs_cache_permit()
192 spin_lock(&vnode->lock); in afs_cache_permit()
193 if (permits != rcu_access_pointer(vnode->permit_cache)) in afs_cache_permit()
195 RCU_INIT_POINTER(vnode->permit_cache, NULL); in afs_cache_permit()
196 spin_unlock(&vnode->lock); in afs_cache_permit()
204 if (afs_cb_is_broken(cb_break, vnode, rcu_dereference(vnode->cb_interest))) in afs_cache_permit()
282 spin_lock(&vnode->lock); in afs_cache_permit()
283 zap = rcu_access_pointer(vnode->permit_cache); in afs_cache_permit()
284 if (!afs_cb_is_broken(cb_break, vnode, rcu_dereference(vnode->cb_interest)) && in afs_cache_permit()
286 rcu_assign_pointer(vnode->permit_cache, replacement); in afs_cache_permit()
289 spin_unlock(&vnode->lock); in afs_cache_permit()
297 spin_unlock(&vnode->lock); in afs_cache_permit()
306 static bool afs_check_permit_rcu(struct afs_vnode *vnode, struct key *key, in afs_check_permit_rcu() argument
313 vnode->fid.vid, vnode->fid.vnode, key_serial(key)); in afs_check_permit_rcu()
316 if (key == vnode->volume->cell->anonymous_key) { in afs_check_permit_rcu()
317 *_access = vnode->status.anon_access; in afs_check_permit_rcu()
322 permits = rcu_dereference(vnode->permit_cache); in afs_check_permit_rcu()
345 int afs_check_permit(struct afs_vnode *vnode, struct key *key, in afs_check_permit() argument
353 vnode->fid.vid, vnode->fid.vnode, key_serial(key)); in afs_check_permit()
356 if (key == vnode->volume->cell->anonymous_key) { in afs_check_permit()
358 *_access = vnode->status.anon_access; in afs_check_permit()
362 permits = rcu_dereference(vnode->permit_cache); in afs_check_permit()
384 ret = afs_fetch_status(vnode, key, false, _access); in afs_check_permit()
403 struct afs_vnode *vnode = AFS_FS_I(inode); in afs_permission() local
409 vnode->fid.vid, vnode->fid.vnode, vnode->flags, mask); in afs_permission()
412 key = afs_request_key_rcu(vnode->volume->cell); in afs_permission()
417 if (!afs_check_validity(vnode) || in afs_permission()
418 !afs_check_permit_rcu(vnode, key, &access)) in afs_permission()
421 key = afs_request_key(vnode->volume->cell); in afs_permission()
427 ret = afs_validate(vnode, key); in afs_permission()
432 ret = afs_check_permit(vnode, key, &access); in afs_permission()