Lines Matching refs:vnode
120 bool afs_check_validity(const struct afs_vnode *vnode) in afs_check_validity() argument
122 const struct afs_volume *volume = vnode->volume; in afs_check_validity()
124 time64_t cb_expires_at = atomic64_read(&vnode->cb_expires_at); in afs_check_validity()
127 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_check_validity()
138 else if (vnode->cb_ro_snapshot != atomic_read(&volume->cb_ro_snapshot)) in afs_check_validity()
140 else if (vnode->cb_scrub != atomic_read(&volume->cb_scrub)) in afs_check_validity()
142 else if (test_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) in afs_check_validity()
146 trace_afs_vnode_invalid(vnode, trace); in afs_check_validity()
367 static void afs_zap_data(struct afs_vnode *vnode) in afs_zap_data() argument
369 _enter("{%llx:%llu}", vnode->fid.vid, vnode->fid.vnode); in afs_zap_data()
371 afs_invalidate_cache(vnode, 0); in afs_zap_data()
376 if (S_ISREG(vnode->netfs.inode.i_mode)) in afs_zap_data()
377 filemap_invalidate_inode(&vnode->netfs.inode, true, 0, LLONG_MAX); in afs_zap_data()
379 filemap_invalidate_inode(&vnode->netfs.inode, false, 0, LLONG_MAX); in afs_zap_data()
391 int afs_validate(struct afs_vnode *vnode, struct key *key) in afs_validate() argument
393 struct afs_volume *volume = vnode->volume; in afs_validate()
400 vnode->fid.vid, vnode->fid.vnode, vnode->flags, in afs_validate()
403 if (afs_check_validity(vnode)) in afs_validate()
404 return test_bit(AFS_VNODE_DELETED, &vnode->flags) ? -ESTALE : 0; in afs_validate()
406 ret = down_write_killable(&vnode->validate_lock); in afs_validate()
410 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) { in afs_validate()
430 if (vnode->cb_ro_snapshot != cb_ro_snapshot || in afs_validate()
431 vnode->cb_scrub != cb_scrub) in afs_validate()
432 unmap_mapping_pages(vnode->netfs.inode.i_mapping, 0, 0, false); in afs_validate()
434 if (vnode->cb_ro_snapshot != cb_ro_snapshot || in afs_validate()
435 vnode->cb_scrub != cb_scrub || in afs_validate()
438 atomic64_read(&vnode->cb_expires_at) <= deadline in afs_validate()
440 ret = afs_fetch_status(vnode, key, false, NULL); in afs_validate()
443 set_bit(AFS_VNODE_DELETED, &vnode->flags); in afs_validate()
449 _debug("new promise [fl=%lx]", vnode->flags); in afs_validate()
461 vnode->cb_ro_snapshot, cb_ro_snapshot, in afs_validate()
462 vnode->cb_scrub, cb_scrub); in afs_validate()
463 if (vnode->cb_scrub != cb_scrub) in afs_validate()
465 vnode->cb_ro_snapshot = cb_ro_snapshot; in afs_validate()
466 vnode->cb_scrub = cb_scrub; in afs_validate()
470 zap |= test_and_clear_bit(AFS_VNODE_ZAP_DATA, &vnode->flags); in afs_validate()
472 afs_zap_data(vnode); in afs_validate()
473 up_write(&vnode->validate_lock); in afs_validate()
480 up_write(&vnode->validate_lock); in afs_validate()