• Home
  • Raw
  • Download

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()
67 if (vnode->status.size != inode->i_size) in afs_inode_map_status()
68 fscache_attr_changed(vnode->cache); in afs_inode_map_status()
71 set_nlink(inode, vnode->status.nlink); in afs_inode_map_status()
72 inode->i_uid = vnode->status.owner; in afs_inode_map_status()
73 inode->i_gid = vnode->status.group; in afs_inode_map_status()
74 inode->i_size = vnode->status.size; in afs_inode_map_status()
75 inode->i_ctime.tv_sec = vnode->status.mtime_client; in afs_inode_map_status()
79 inode->i_generation = vnode->fid.unique; in afs_inode_map_status()
80 inode->i_version = vnode->status.data_version; in afs_inode_map_status()
84 if (vnode->status.type == AFS_FTYPE_SYMLINK) { in afs_inode_map_status()
85 afs_mntpt_check_symlink(vnode, key); in afs_inode_map_status()
87 if (test_bit(AFS_VNODE_MOUNTPOINT, &vnode->flags)) { in afs_inode_map_status()
88 inode->i_mode = S_IFDIR | vnode->status.mode; in afs_inode_map_status()
104 return inode->i_ino == data->fid.vnode && in afs_iget5_test()
124 struct afs_vnode *vnode = AFS_FS_I(inode); in afs_iget5_set() local
126 inode->i_ino = data->fid.vnode; in afs_iget5_set()
128 vnode->fid = data->fid; in afs_iget5_set()
129 vnode->volume = data->volume; in afs_iget5_set()
142 struct afs_vnode *vnode; in afs_iget_autocell() local
148 AFS_FS_I(dir)->fid.vid, AFS_FS_I(dir)->fid.vnode, in afs_iget_autocell()
156 data.fid.vnode = 0; in afs_iget_autocell()
167 inode, inode->i_ino, data.fid.vid, data.fid.vnode, in afs_iget_autocell()
170 vnode = AFS_FS_I(inode); in afs_iget_autocell()
188 set_bit(AFS_VNODE_PSEUDODIR, &vnode->flags); in afs_iget_autocell()
189 set_bit(AFS_VNODE_MOUNTPOINT, &vnode->flags); in afs_iget_autocell()
205 struct afs_vnode *vnode; in afs_iget() local
209 _enter(",{%x:%u.%u},,", fid->vid, fid->vnode, fid->unique); in afs_iget()
214 inode = iget5_locked(sb, fid->vnode, afs_iget5_test, afs_iget5_set, in afs_iget()
222 inode, fid->vid, fid->vnode, fid->unique); in afs_iget()
224 vnode = AFS_FS_I(inode); in afs_iget()
234 set_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_iget()
235 ret = afs_vnode_fetch_status(vnode, NULL, key); in afs_iget()
240 memcpy(&vnode->status, status, sizeof(vnode->status)); in afs_iget()
245 vnode->cb_version = 0; in afs_iget()
246 vnode->cb_expiry = 0; in afs_iget()
247 vnode->cb_type = 0; in afs_iget()
248 vnode->cb_expires = ktime_get_real_seconds(); in afs_iget()
250 vnode->cb_version = cb->version; in afs_iget()
251 vnode->cb_expiry = cb->expiry; in afs_iget()
252 vnode->cb_type = cb->type; in afs_iget()
253 vnode->cb_expires = vnode->cb_expiry + in afs_iget()
260 inode->i_size = vnode->status.size; in afs_iget()
262 vnode->cache = fscache_acquire_cookie(vnode->volume->cache, in afs_iget()
264 vnode, true); in afs_iget()
267 ret = afs_inode_map_status(vnode, key); in afs_iget()
272 clear_bit(AFS_VNODE_UNSET, &vnode->flags); in afs_iget()
275 _leave(" = %p [CB { v=%u t=%u }]", inode, vnode->cb_version, vnode->cb_type); in afs_iget()
281 fscache_relinquish_cookie(vnode->cache, 0); in afs_iget()
282 vnode->cache = NULL; in afs_iget()
293 void afs_zap_data(struct afs_vnode *vnode) in afs_zap_data() argument
295 _enter("{%x:%u}", vnode->fid.vid, vnode->fid.vnode); in afs_zap_data()
300 if (S_ISREG(vnode->vfs_inode.i_mode)) in afs_zap_data()
301 invalidate_remote_inode(&vnode->vfs_inode); in afs_zap_data()
303 invalidate_inode_pages2(vnode->vfs_inode.i_mapping); in afs_zap_data()
315 int afs_validate(struct afs_vnode *vnode, struct key *key) in afs_validate() argument
320 vnode->fid.vid, vnode->fid.vnode, vnode->flags, in afs_validate()
323 if (vnode->cb_promised && in afs_validate()
324 !test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags) && in afs_validate()
325 !test_bit(AFS_VNODE_MODIFIED, &vnode->flags) && in afs_validate()
326 !test_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) { in afs_validate()
327 if (vnode->cb_expires < ktime_get_real_seconds() + 10) { in afs_validate()
329 set_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_validate()
335 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_validate()
338 mutex_lock(&vnode->validate_lock); in afs_validate()
344 if (!vnode->cb_promised || in afs_validate()
345 test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags)) { in afs_validate()
347 ret = afs_vnode_fetch_status(vnode, NULL, key); in afs_validate()
350 _debug("new promise [fl=%lx]", vnode->flags); in afs_validate()
353 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) { in afs_validate()
361 if (test_and_clear_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) in afs_validate()
362 afs_zap_data(vnode); in afs_validate()
364 clear_bit(AFS_VNODE_MODIFIED, &vnode->flags); in afs_validate()
365 mutex_unlock(&vnode->validate_lock); in afs_validate()
371 mutex_unlock(&vnode->validate_lock); in afs_validate()
411 struct afs_vnode *vnode; in afs_evict_inode() local
413 vnode = AFS_FS_I(inode); in afs_evict_inode()
416 vnode->fid.vid, in afs_evict_inode()
417 vnode->fid.vnode, in afs_evict_inode()
418 vnode->fid.unique, in afs_evict_inode()
419 vnode->cb_version, in afs_evict_inode()
420 vnode->cb_expiry, in afs_evict_inode()
421 vnode->cb_type); in afs_evict_inode()
425 ASSERTCMP(inode->i_ino, ==, vnode->fid.vnode); in afs_evict_inode()
430 afs_give_up_callback(vnode); in afs_evict_inode()
432 if (vnode->server) { in afs_evict_inode()
433 spin_lock(&vnode->server->fs_lock); in afs_evict_inode()
434 rb_erase(&vnode->server_rb, &vnode->server->fs_vnodes); in afs_evict_inode()
435 spin_unlock(&vnode->server->fs_lock); in afs_evict_inode()
436 afs_put_server(vnode->server); in afs_evict_inode()
437 vnode->server = NULL; in afs_evict_inode()
440 ASSERT(list_empty(&vnode->writebacks)); in afs_evict_inode()
441 ASSERT(!vnode->cb_promised); in afs_evict_inode()
444 fscache_relinquish_cookie(vnode->cache, 0); in afs_evict_inode()
445 vnode->cache = NULL; in afs_evict_inode()
448 mutex_lock(&vnode->permits_lock); in afs_evict_inode()
449 permits = vnode->permits; in afs_evict_inode()
450 rcu_assign_pointer(vnode->permits, NULL); in afs_evict_inode()
451 mutex_unlock(&vnode->permits_lock); in afs_evict_inode()
463 struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry)); in afs_setattr() local
468 vnode->fid.vid, vnode->fid.vnode, dentry, in afs_setattr()
478 if (S_ISREG(vnode->vfs_inode.i_mode)) { in afs_setattr()
479 filemap_write_and_wait(vnode->vfs_inode.i_mapping); in afs_setattr()
480 afs_writeback_all(vnode); in afs_setattr()
486 key = afs_request_key(vnode->volume->cell); in afs_setattr()
493 ret = afs_vnode_setattr(vnode, key, attr); in afs_setattr()