Lines Matching refs:vnode

34 static int afs_inode_map_status(struct afs_vnode *vnode, struct key *key)  in afs_inode_map_status()  argument
36 struct inode *inode = AFS_VNODE_TO_I(vnode); in afs_inode_map_status()
39 vnode->status.type, in afs_inode_map_status()
40 vnode->status.nlink, in afs_inode_map_status()
41 (unsigned long long) vnode->status.size, in afs_inode_map_status()
42 vnode->status.data_version, in afs_inode_map_status()
43 vnode->status.mode); in afs_inode_map_status()
45 switch (vnode->status.type) { in afs_inode_map_status()
47 inode->i_mode = S_IFREG | vnode->status.mode; in afs_inode_map_status()
52 inode->i_mode = S_IFDIR | vnode->status.mode; in afs_inode_map_status()
57 inode->i_mode = S_IFLNK | vnode->status.mode; in afs_inode_map_status()
66 if (vnode->status.size != inode->i_size) in afs_inode_map_status()
67 fscache_attr_changed(vnode->cache); in afs_inode_map_status()
70 set_nlink(inode, vnode->status.nlink); in afs_inode_map_status()
71 inode->i_uid = vnode->status.owner; in afs_inode_map_status()
73 inode->i_size = vnode->status.size; in afs_inode_map_status()
74 inode->i_ctime.tv_sec = vnode->status.mtime_server; in afs_inode_map_status()
78 inode->i_generation = vnode->fid.unique; in afs_inode_map_status()
79 inode->i_version = vnode->status.data_version; in afs_inode_map_status()
83 if (vnode->status.type == AFS_FTYPE_SYMLINK) { in afs_inode_map_status()
84 afs_mntpt_check_symlink(vnode, key); in afs_inode_map_status()
86 if (test_bit(AFS_VNODE_MOUNTPOINT, &vnode->flags)) { in afs_inode_map_status()
87 inode->i_mode = S_IFDIR | vnode->status.mode; in afs_inode_map_status()
103 return inode->i_ino == data->fid.vnode && in afs_iget5_test()
123 struct afs_vnode *vnode = AFS_FS_I(inode); in afs_iget5_set() local
125 inode->i_ino = data->fid.vnode; in afs_iget5_set()
127 vnode->fid = data->fid; in afs_iget5_set()
128 vnode->volume = data->volume; in afs_iget5_set()
141 struct afs_vnode *vnode; in afs_iget_autocell() local
147 AFS_FS_I(dir)->fid.vid, AFS_FS_I(dir)->fid.vnode, in afs_iget_autocell()
155 data.fid.vnode = 0; in afs_iget_autocell()
166 inode, inode->i_ino, data.fid.vid, data.fid.vnode, in afs_iget_autocell()
169 vnode = AFS_FS_I(inode); in afs_iget_autocell()
187 set_bit(AFS_VNODE_PSEUDODIR, &vnode->flags); in afs_iget_autocell()
188 set_bit(AFS_VNODE_MOUNTPOINT, &vnode->flags); in afs_iget_autocell()
204 struct afs_vnode *vnode; in afs_iget() local
208 _enter(",{%x:%u.%u},,", fid->vid, fid->vnode, fid->unique); in afs_iget()
213 inode = iget5_locked(sb, fid->vnode, afs_iget5_test, afs_iget5_set, in afs_iget()
221 inode, fid->vid, fid->vnode, fid->unique); in afs_iget()
223 vnode = AFS_FS_I(inode); in afs_iget()
233 set_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_iget()
234 ret = afs_vnode_fetch_status(vnode, NULL, key); in afs_iget()
239 memcpy(&vnode->status, status, sizeof(vnode->status)); in afs_iget()
244 vnode->cb_version = 0; in afs_iget()
245 vnode->cb_expiry = 0; in afs_iget()
246 vnode->cb_type = 0; in afs_iget()
247 vnode->cb_expires = get_seconds(); in afs_iget()
249 vnode->cb_version = cb->version; in afs_iget()
250 vnode->cb_expiry = cb->expiry; in afs_iget()
251 vnode->cb_type = cb->type; in afs_iget()
252 vnode->cb_expires = vnode->cb_expiry + get_seconds(); in afs_iget()
258 inode->i_size = vnode->status.size; in afs_iget()
260 vnode->cache = fscache_acquire_cookie(vnode->volume->cache, in afs_iget()
262 vnode, true); in afs_iget()
265 ret = afs_inode_map_status(vnode, key); in afs_iget()
270 clear_bit(AFS_VNODE_UNSET, &vnode->flags); in afs_iget()
273 _leave(" = %p [CB { v=%u t=%u }]", inode, vnode->cb_version, vnode->cb_type); in afs_iget()
279 fscache_relinquish_cookie(vnode->cache, 0); in afs_iget()
280 vnode->cache = NULL; in afs_iget()
291 void afs_zap_data(struct afs_vnode *vnode) in afs_zap_data() argument
293 _enter("{%x:%u}", vnode->fid.vid, vnode->fid.vnode); in afs_zap_data()
298 if (S_ISREG(vnode->vfs_inode.i_mode)) in afs_zap_data()
299 invalidate_remote_inode(&vnode->vfs_inode); in afs_zap_data()
301 invalidate_inode_pages2(vnode->vfs_inode.i_mapping); in afs_zap_data()
313 int afs_validate(struct afs_vnode *vnode, struct key *key) in afs_validate() argument
318 vnode->fid.vid, vnode->fid.vnode, vnode->flags, in afs_validate()
321 if (vnode->cb_promised && in afs_validate()
322 !test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags) && in afs_validate()
323 !test_bit(AFS_VNODE_MODIFIED, &vnode->flags) && in afs_validate()
324 !test_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) { in afs_validate()
325 if (vnode->cb_expires < get_seconds() + 10) { in afs_validate()
327 set_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_validate()
333 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_validate()
336 mutex_lock(&vnode->validate_lock); in afs_validate()
342 if (!vnode->cb_promised || in afs_validate()
343 test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags)) { in afs_validate()
345 ret = afs_vnode_fetch_status(vnode, NULL, key); in afs_validate()
348 _debug("new promise [fl=%lx]", vnode->flags); in afs_validate()
351 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) { in afs_validate()
359 if (test_and_clear_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) in afs_validate()
360 afs_zap_data(vnode); in afs_validate()
362 clear_bit(AFS_VNODE_MODIFIED, &vnode->flags); in afs_validate()
363 mutex_unlock(&vnode->validate_lock); in afs_validate()
369 mutex_unlock(&vnode->validate_lock); in afs_validate()
409 struct afs_vnode *vnode; in afs_evict_inode() local
411 vnode = AFS_FS_I(inode); in afs_evict_inode()
414 vnode->fid.vid, in afs_evict_inode()
415 vnode->fid.vnode, in afs_evict_inode()
416 vnode->fid.unique, in afs_evict_inode()
417 vnode->cb_version, in afs_evict_inode()
418 vnode->cb_expiry, in afs_evict_inode()
419 vnode->cb_type); in afs_evict_inode()
423 ASSERTCMP(inode->i_ino, ==, vnode->fid.vnode); in afs_evict_inode()
428 afs_give_up_callback(vnode); in afs_evict_inode()
430 if (vnode->server) { in afs_evict_inode()
431 spin_lock(&vnode->server->fs_lock); in afs_evict_inode()
432 rb_erase(&vnode->server_rb, &vnode->server->fs_vnodes); in afs_evict_inode()
433 spin_unlock(&vnode->server->fs_lock); in afs_evict_inode()
434 afs_put_server(vnode->server); in afs_evict_inode()
435 vnode->server = NULL; in afs_evict_inode()
438 ASSERT(list_empty(&vnode->writebacks)); in afs_evict_inode()
439 ASSERT(!vnode->cb_promised); in afs_evict_inode()
442 fscache_relinquish_cookie(vnode->cache, 0); in afs_evict_inode()
443 vnode->cache = NULL; in afs_evict_inode()
446 mutex_lock(&vnode->permits_lock); in afs_evict_inode()
447 permits = vnode->permits; in afs_evict_inode()
448 rcu_assign_pointer(vnode->permits, NULL); in afs_evict_inode()
449 mutex_unlock(&vnode->permits_lock); in afs_evict_inode()
461 struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry)); in afs_setattr() local
466 vnode->fid.vid, vnode->fid.vnode, dentry, in afs_setattr()
476 if (S_ISREG(vnode->vfs_inode.i_mode)) { in afs_setattr()
477 filemap_write_and_wait(vnode->vfs_inode.i_mapping); in afs_setattr()
478 afs_writeback_all(vnode); in afs_setattr()
484 key = afs_request_key(vnode->volume->cell); in afs_setattr()
491 ret = afs_vnode_setattr(vnode, key, attr); in afs_setattr()