Lines Matching refs:dvnode

136 static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,  in afs_dir_check_folio()  argument
155 __func__, dvnode->vfs_inode.i_ino, in afs_dir_check_folio()
157 trace_afs_dir_check_failed(dvnode, pos + offset, i_size); in afs_dir_check_folio()
159 trace_afs_file_error(dvnode, -EIO, afs_file_error_dir_bad_magic); in afs_dir_check_folio()
172 afs_stat_v(dvnode, n_read_dir); in afs_dir_check_folio()
182 static void afs_dir_dump(struct afs_vnode *dvnode, struct afs_read *req) in afs_dir_dump() argument
185 struct address_space *mapping = dvnode->vfs_inode.i_mapping; in afs_dir_dump()
193 dvnode->fid.vid, dvnode->fid.vnode, in afs_dir_dump()
217 static int afs_dir_check(struct afs_vnode *dvnode, struct afs_read *req) in afs_dir_check() argument
219 struct address_space *mapping = dvnode->vfs_inode.i_mapping; in afs_dir_check()
236 if (!afs_dir_check_folio(dvnode, folio, req->actual_len)) { in afs_dir_check()
237 afs_dir_dump(dvnode, req); in afs_dir_check()
268 static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key) in afs_read_dir() argument
269 __acquires(&dvnode->validate_lock) in afs_read_dir()
271 struct address_space *mapping = dvnode->vfs_inode.i_mapping; in afs_read_dir()
284 req->vnode = dvnode; in afs_read_dir()
289 i_size = i_size_read(&dvnode->vfs_inode); in afs_read_dir()
291 ret = afs_bad(dvnode, afs_file_error_dir_small); in afs_read_dir()
295 trace_afs_file_error(dvnode, -EFBIG, afs_file_error_dir_big); in afs_read_dir()
306 req->data_version = dvnode->status.data_version; /* May change */ in afs_read_dir()
307 iov_iter_xarray(&req->def_iter, READ, &dvnode->vfs_inode.i_mapping->i_pages, in afs_read_dir()
321 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) in afs_read_dir()
322 afs_stat_v(dvnode, n_inval); in afs_read_dir()
342 if (down_read_killable(&dvnode->validate_lock) < 0) in afs_read_dir()
345 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) in afs_read_dir()
348 up_read(&dvnode->validate_lock); in afs_read_dir()
349 if (down_write_killable(&dvnode->validate_lock) < 0) in afs_read_dir()
352 if (!test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) { in afs_read_dir()
353 trace_afs_reload_dir(dvnode); in afs_read_dir()
354 ret = afs_fetch_data(dvnode, req); in afs_read_dir()
364 up_write(&dvnode->validate_lock); in afs_read_dir()
369 ret = afs_dir_check(dvnode, req); in afs_read_dir()
375 set_bit(AFS_VNODE_DIR_VALID, &dvnode->flags); in afs_read_dir()
378 downgrade_write(&dvnode->validate_lock); in afs_read_dir()
383 up_write(&dvnode->validate_lock); in afs_read_dir()
393 static int afs_dir_iterate_block(struct afs_vnode *dvnode, in afs_dir_iterate_block() argument
433 return afs_bad(dvnode, afs_file_error_dir_name_too_long); in afs_dir_iterate_block()
449 return afs_bad(dvnode, afs_file_error_dir_over_end); in afs_dir_iterate_block()
460 return afs_bad(dvnode, afs_file_error_dir_unmarked_ext); in afs_dir_iterate_block()
491 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_dir_iterate() local
505 req = afs_read_dir(dvnode, key); in afs_dir_iterate()
523 ret = afs_bad(dvnode, afs_file_error_dir_missing_page); in afs_dir_iterate()
533 ret = afs_dir_iterate_block(dvnode, ctx, dblock, in afs_dir_iterate()
545 up_read(&dvnode->validate_lock); in afs_dir_iterate()
749 static bool afs_server_supports_ibulk(struct afs_vnode *dvnode) in afs_server_supports_ibulk() argument
752 struct afs_volume *volume = dvnode->volume; in afs_server_supports_ibulk()
765 if (server == dvnode->cb_server) { in afs_server_supports_ibulk()
787 struct afs_vnode *dvnode = AFS_FS_I(dir), *vnode; in afs_do_lookup() local
789 afs_dataversion_t data_version = READ_ONCE(dvnode->status.data_version); in afs_do_lookup()
800 cookie->fids[i].vid = dvnode->fid.vid; in afs_do_lookup()
806 if (!afs_server_supports_ibulk(dvnode)) in afs_do_lookup()
830 op = afs_alloc_operation(NULL, dvnode->volume); in afs_do_lookup()
836 afs_op_set_vnode(op, 0, dvnode); in afs_do_lookup()
973 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_lookup() local
981 dvnode->fid.vid, dvnode->fid.vnode, dentry, dentry); in afs_lookup()
990 if (test_bit(AFS_VNODE_DELETED, &dvnode->flags)) { in afs_lookup()
995 key = afs_request_key(dvnode->volume->cell); in afs_lookup()
1001 ret = afs_validate(dvnode, key); in afs_lookup()
1015 afs_stat_v(dvnode, n_lookup); in afs_lookup()
1028 trace_afs_lookup(dvnode, &d->d_name, &fid); in afs_lookup()
1030 trace_afs_lookup(dvnode, &dentry->d_name, &fid); in afs_lookup()
1041 struct afs_vnode *dvnode; in afs_d_revalidate_rcu() local
1053 dvnode = AFS_FS_I(dir); in afs_d_revalidate_rcu()
1054 if (test_bit(AFS_VNODE_DELETED, &dvnode->flags)) in afs_d_revalidate_rcu()
1057 if (!afs_check_validity(dvnode)) in afs_d_revalidate_rcu()
1065 dir_version = (long)READ_ONCE(dvnode->status.data_version); in afs_d_revalidate_rcu()
1068 dir_version = (long)READ_ONCE(dvnode->invalid_before); in afs_d_revalidate_rcu()
1301 struct afs_vnode *dvnode = dvp->vnode; in afs_create_edit_dir() local
1305 down_write(&dvnode->validate_lock); in afs_create_edit_dir()
1306 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && in afs_create_edit_dir()
1307 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta) in afs_create_edit_dir()
1308 afs_edit_dir_add(dvnode, &op->dentry->d_name, &vp->fid, in afs_create_edit_dir()
1310 up_write(&dvnode->validate_lock); in afs_create_edit_dir()
1337 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_mkdir() local
1340 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_mkdir()
1342 op = afs_alloc_operation(NULL, dvnode->volume); in afs_mkdir()
1348 afs_op_set_vnode(op, 0, dvnode); in afs_mkdir()
1385 struct afs_vnode *dvnode = dvp->vnode; in afs_rmdir_edit_dir() local
1390 down_write(&dvnode->validate_lock); in afs_rmdir_edit_dir()
1391 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && in afs_rmdir_edit_dir()
1392 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta) in afs_rmdir_edit_dir()
1393 afs_edit_dir_remove(dvnode, &op->dentry->d_name, in afs_rmdir_edit_dir()
1395 up_write(&dvnode->validate_lock); in afs_rmdir_edit_dir()
1420 struct afs_vnode *dvnode = AFS_FS_I(dir), *vnode = NULL; in afs_rmdir() local
1424 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_rmdir()
1426 op = afs_alloc_operation(NULL, dvnode->volume); in afs_rmdir()
1430 afs_op_set_vnode(op, 0, dvnode); in afs_rmdir()
1471 struct afs_vnode *dvnode = op->file[0].vnode; in afs_dir_remove_link() local
1484 } else if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) { in afs_dir_remove_link()
1520 struct afs_vnode *dvnode = dvp->vnode; in afs_unlink_edit_dir() local
1523 down_write(&dvnode->validate_lock); in afs_unlink_edit_dir()
1524 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && in afs_unlink_edit_dir()
1525 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta) in afs_unlink_edit_dir()
1526 afs_edit_dir_remove(dvnode, &op->dentry->d_name, in afs_unlink_edit_dir()
1528 up_write(&dvnode->validate_lock); in afs_unlink_edit_dir()
1553 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_unlink() local
1558 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_unlink()
1563 op = afs_alloc_operation(NULL, dvnode->volume); in afs_unlink()
1567 afs_op_set_vnode(op, 0, dvnode); in afs_unlink()
1584 op->error = afs_sillyrename(dvnode, vnode, dentry, op->key); in afs_unlink()
1635 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_create() local
1639 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_create()
1644 op = afs_alloc_operation(NULL, dvnode->volume); in afs_create()
1650 afs_op_set_vnode(op, 0, dvnode); in afs_create()
1706 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_link() local
1712 dvnode->fid.vid, dvnode->fid.vnode, in afs_link()
1718 op = afs_alloc_operation(NULL, dvnode->volume); in afs_link()
1728 afs_op_set_vnode(op, 0, dvnode); in afs_link()
1765 struct afs_vnode *dvnode = AFS_FS_I(dir); in afs_symlink() local
1769 dvnode->fid.vid, dvnode->fid.vnode, dentry, in afs_symlink()
1780 op = afs_alloc_operation(NULL, dvnode->volume); in afs_symlink()
1786 afs_op_set_vnode(op, 0, dvnode); in afs_symlink()
2007 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio)); in afs_dir_releasepage() local
2009 _enter("{{%llx:%llu}[%lu]}", dvnode->fid.vid, dvnode->fid.vnode, folio_index(folio)); in afs_dir_releasepage()
2014 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) in afs_dir_releasepage()
2015 afs_stat_v(dvnode, n_relpg); in afs_dir_releasepage()
2026 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio)); in afs_dir_invalidatepage() local
2033 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) in afs_dir_invalidatepage()
2034 afs_stat_v(dvnode, n_inval); in afs_dir_invalidatepage()