Lines Matching defs:dvnode
138 static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,
157 __func__, dvnode->netfs.inode.i_ino,
159 trace_afs_dir_check_failed(dvnode, pos + offset, i_size);
161 trace_afs_file_error(dvnode, -EIO, afs_file_error_dir_bad_magic);
174 afs_stat_v(dvnode, n_read_dir);
184 static void afs_dir_dump(struct afs_vnode *dvnode, struct afs_read *req)
187 struct address_space *mapping = dvnode->netfs.inode.i_mapping;
195 dvnode->fid.vid, dvnode->fid.vnode,
219 static int afs_dir_check(struct afs_vnode *dvnode, struct afs_read *req)
221 struct address_space *mapping = dvnode->netfs.inode.i_mapping;
238 if (!afs_dir_check_folio(dvnode, folio, req->actual_len)) {
239 afs_dir_dump(dvnode, req);
270 static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key)
271 __acquires(&dvnode->validate_lock)
273 struct address_space *mapping = dvnode->netfs.inode.i_mapping;
287 req->vnode = dvnode;
292 i_size = i_size_read(&dvnode->netfs.inode);
296 ret = afs_bad(dvnode, afs_file_error_dir_small);
300 trace_afs_file_error(dvnode, -EFBIG, afs_file_error_dir_big);
311 req->data_version = dvnode->status.data_version; /* May change */
312 iov_iter_xarray(&req->def_iter, ITER_DEST, &dvnode->netfs.inode.i_mapping->i_pages,
326 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags))
327 afs_stat_v(dvnode, n_inval);
347 if (down_read_killable(&dvnode->validate_lock) < 0)
350 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags))
353 up_read(&dvnode->validate_lock);
354 if (down_write_killable(&dvnode->validate_lock) < 0)
357 if (!test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) {
358 trace_afs_reload_dir(dvnode);
359 ret = afs_fetch_data(dvnode, req);
369 up_write(&dvnode->validate_lock);
375 ret = afs_dir_check(dvnode, req);
381 set_bit(AFS_VNODE_DIR_VALID, &dvnode->flags);
384 downgrade_write(&dvnode->validate_lock);
389 up_write(&dvnode->validate_lock);
399 static int afs_dir_iterate_block(struct afs_vnode *dvnode,
439 return afs_bad(dvnode, afs_file_error_dir_name_too_long);
455 return afs_bad(dvnode, afs_file_error_dir_over_end);
466 return afs_bad(dvnode, afs_file_error_dir_unmarked_ext);
500 struct afs_vnode *dvnode = AFS_FS_I(dir);
514 req = afs_read_dir(dvnode, key);
532 ret = afs_bad(dvnode, afs_file_error_dir_missing_page);
542 ret = afs_dir_iterate_block(dvnode, ctx, dblock,
554 up_read(&dvnode->validate_lock);
755 static bool afs_server_supports_ibulk(struct afs_vnode *dvnode)
758 struct afs_volume *volume = dvnode->volume;
771 if (server == dvnode->cb_server) {
793 struct afs_vnode *dvnode = AFS_FS_I(dir), *vnode;
795 afs_dataversion_t data_version = READ_ONCE(dvnode->status.data_version);
806 cookie->fids[i].vid = dvnode->fid.vid;
812 if (!afs_server_supports_ibulk(dvnode))
836 op = afs_alloc_operation(NULL, dvnode->volume);
842 afs_op_set_vnode(op, 0, dvnode);
979 struct afs_vnode *dvnode = AFS_FS_I(dir);
987 dvnode->fid.vid, dvnode->fid.vnode, dentry, dentry);
996 if (test_bit(AFS_VNODE_DELETED, &dvnode->flags)) {
1001 key = afs_request_key(dvnode->volume->cell);
1007 ret = afs_validate(dvnode, key);
1021 afs_stat_v(dvnode, n_lookup);
1034 trace_afs_lookup(dvnode, &d->d_name, &fid);
1036 trace_afs_lookup(dvnode, &dentry->d_name, &fid);
1047 struct afs_vnode *dvnode;
1059 dvnode = AFS_FS_I(dir);
1060 if (test_bit(AFS_VNODE_DELETED, &dvnode->flags))
1063 if (!afs_check_validity(dvnode))
1071 dir_version = (long)READ_ONCE(dvnode->status.data_version);
1074 dir_version = (long)READ_ONCE(dvnode->invalid_before);
1307 struct afs_vnode *dvnode = dvp->vnode;
1311 down_write(&dvnode->validate_lock);
1312 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) &&
1313 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta)
1314 afs_edit_dir_add(dvnode, &op->dentry->d_name, &vp->fid,
1316 up_write(&dvnode->validate_lock);
1343 struct afs_vnode *dvnode = AFS_FS_I(dir);
1346 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode);
1348 op = afs_alloc_operation(NULL, dvnode->volume);
1354 afs_op_set_vnode(op, 0, dvnode);
1392 struct afs_vnode *dvnode = dvp->vnode;
1397 down_write(&dvnode->validate_lock);
1398 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) &&
1399 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta)
1400 afs_edit_dir_remove(dvnode, &op->dentry->d_name,
1402 up_write(&dvnode->validate_lock);
1427 struct afs_vnode *dvnode = AFS_FS_I(dir), *vnode = NULL;
1431 dvnode->fid.vid, dvnode->fid.vnode, dentry);
1433 op = afs_alloc_operation(NULL, dvnode->volume);
1437 afs_op_set_vnode(op, 0, dvnode);
1478 struct afs_vnode *dvnode = op->file[0].vnode;
1491 } else if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) {
1527 struct afs_vnode *dvnode = dvp->vnode;
1530 down_write(&dvnode->validate_lock);
1531 if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) &&
1532 dvnode->status.data_version == dvp->dv_before + dvp->dv_delta)
1533 afs_edit_dir_remove(dvnode, &op->dentry->d_name,
1535 up_write(&dvnode->validate_lock);
1560 struct afs_vnode *dvnode = AFS_FS_I(dir);
1565 dvnode->fid.vid, dvnode->fid.vnode, dentry);
1570 op = afs_alloc_operation(NULL, dvnode->volume);
1574 afs_op_set_vnode(op, 0, dvnode);
1591 op->error = afs_sillyrename(dvnode, vnode, dentry, op->key);
1642 struct afs_vnode *dvnode = AFS_FS_I(dir);
1646 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode);
1651 op = afs_alloc_operation(NULL, dvnode->volume);
1657 afs_op_set_vnode(op, 0, dvnode);
1714 struct afs_vnode *dvnode = AFS_FS_I(dir);
1720 dvnode->fid.vid, dvnode->fid.vnode,
1726 op = afs_alloc_operation(NULL, dvnode->volume);
1736 afs_op_set_vnode(op, 0, dvnode);
1773 struct afs_vnode *dvnode = AFS_FS_I(dir);
1777 dvnode->fid.vid, dvnode->fid.vnode, dentry,
1788 op = afs_alloc_operation(NULL, dvnode->volume);
1794 afs_op_set_vnode(op, 0, dvnode);
2015 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio));
2017 _enter("{{%llx:%llu}[%lu]}", dvnode->fid.vid, dvnode->fid.vnode, folio_index(folio));
2022 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags))
2023 afs_stat_v(dvnode, n_relpg);
2033 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio));
2040 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags))
2041 afs_stat_v(dvnode, n_inval);