Lines Matching refs:vnode

23 	struct afs_vnode *vnode;
32 vnode = rb_entry(node, struct afs_vnode, cb_promise);
36 vnode, vnode->cb_expires_at);
59 static void afs_install_vnode(struct afs_vnode *vnode, in afs_install_vnode() argument
62 struct afs_server *old_server = vnode->server; in afs_install_vnode()
66 _enter("%p,%p", vnode, server); in afs_install_vnode()
70 rb_erase(&vnode->server_rb, &old_server->fs_vnodes); in afs_install_vnode()
75 vnode->server = server; in afs_install_vnode()
86 if (vnode->fid.vid < xvnode->fid.vid) in afs_install_vnode()
88 else if (vnode->fid.vid > xvnode->fid.vid) in afs_install_vnode()
90 else if (vnode->fid.vnode < xvnode->fid.vnode) in afs_install_vnode()
92 else if (vnode->fid.vnode > xvnode->fid.vnode) in afs_install_vnode()
94 else if (vnode->fid.unique < xvnode->fid.unique) in afs_install_vnode()
96 else if (vnode->fid.unique > xvnode->fid.unique) in afs_install_vnode()
102 rb_link_node(&vnode->server_rb, parent, p); in afs_install_vnode()
103 rb_insert_color(&vnode->server_rb, &server->fs_vnodes); in afs_install_vnode()
113 static void afs_vnode_note_promise(struct afs_vnode *vnode, in afs_vnode_note_promise() argument
120 _enter("%p,%p", vnode, server); in afs_vnode_note_promise()
124 old_server = vnode->server; in afs_vnode_note_promise()
125 if (vnode->cb_promised) { in afs_vnode_note_promise()
127 vnode->cb_expires == vnode->cb_expires_at) { in afs_vnode_note_promise()
133 if (vnode->cb_promised) { in afs_vnode_note_promise()
135 rb_erase(&vnode->cb_promise, &old_server->cb_promises); in afs_vnode_note_promise()
136 vnode->cb_promised = false; in afs_vnode_note_promise()
141 if (vnode->server != server) in afs_vnode_note_promise()
142 afs_install_vnode(vnode, server); in afs_vnode_note_promise()
144 vnode->cb_expires_at = vnode->cb_expires; in afs_vnode_note_promise()
146 vnode, (unsigned long) vnode->cb_expires_at); in afs_vnode_note_promise()
157 if (vnode->cb_expires_at < xvnode->cb_expires_at) in afs_vnode_note_promise()
163 rb_link_node(&vnode->cb_promise, parent, p); in afs_vnode_note_promise()
164 rb_insert_color(&vnode->cb_promise, &server->cb_promises); in afs_vnode_note_promise()
165 vnode->cb_promised = true; in afs_vnode_note_promise()
174 static void afs_vnode_deleted_remotely(struct afs_vnode *vnode) in afs_vnode_deleted_remotely() argument
178 _enter("{%p}", vnode->server); in afs_vnode_deleted_remotely()
180 set_bit(AFS_VNODE_DELETED, &vnode->flags); in afs_vnode_deleted_remotely()
182 server = vnode->server; in afs_vnode_deleted_remotely()
184 if (vnode->cb_promised) { in afs_vnode_deleted_remotely()
186 if (vnode->cb_promised) { in afs_vnode_deleted_remotely()
187 rb_erase(&vnode->cb_promise, in afs_vnode_deleted_remotely()
189 vnode->cb_promised = false; in afs_vnode_deleted_remotely()
195 rb_erase(&vnode->server_rb, &server->fs_vnodes); in afs_vnode_deleted_remotely()
198 vnode->server = NULL; in afs_vnode_deleted_remotely()
201 ASSERT(!vnode->cb_promised); in afs_vnode_deleted_remotely()
213 void afs_vnode_finalise_status_update(struct afs_vnode *vnode, in afs_vnode_finalise_status_update() argument
218 _enter("%p,%p", vnode, server); in afs_vnode_finalise_status_update()
220 spin_lock(&vnode->lock); in afs_vnode_finalise_status_update()
221 clear_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_vnode_finalise_status_update()
222 afs_vnode_note_promise(vnode, server); in afs_vnode_finalise_status_update()
223 vnode->update_cnt--; in afs_vnode_finalise_status_update()
224 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_finalise_status_update()
225 spin_unlock(&vnode->lock); in afs_vnode_finalise_status_update()
227 wake_up_all(&vnode->update_waitq); in afs_vnode_finalise_status_update()
235 static void afs_vnode_status_update_failed(struct afs_vnode *vnode, int ret) in afs_vnode_status_update_failed() argument
237 _enter("{%x:%u},%d", vnode->fid.vid, vnode->fid.vnode, ret); in afs_vnode_status_update_failed()
239 spin_lock(&vnode->lock); in afs_vnode_status_update_failed()
241 clear_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_vnode_status_update_failed()
246 afs_vnode_deleted_remotely(vnode); in afs_vnode_status_update_failed()
249 vnode->update_cnt--; in afs_vnode_status_update_failed()
250 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_status_update_failed()
251 spin_unlock(&vnode->lock); in afs_vnode_status_update_failed()
253 wake_up_all(&vnode->update_waitq); in afs_vnode_status_update_failed()
264 int afs_vnode_fetch_status(struct afs_vnode *vnode, in afs_vnode_fetch_status() argument
274 vnode->volume->vlocation->vldb.name, in afs_vnode_fetch_status()
275 vnode->fid.vid, vnode->fid.vnode, vnode->fid.unique); in afs_vnode_fetch_status()
277 if (!test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags) && in afs_vnode_fetch_status()
278 vnode->cb_promised) { in afs_vnode_fetch_status()
283 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) { in afs_vnode_fetch_status()
292 spin_lock(&vnode->lock); in afs_vnode_fetch_status()
294 if (!test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags) && in afs_vnode_fetch_status()
295 vnode->cb_promised) { in afs_vnode_fetch_status()
296 spin_unlock(&vnode->lock); in afs_vnode_fetch_status()
301 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_fetch_status()
303 if (vnode->update_cnt > 0) { in afs_vnode_fetch_status()
305 _debug("wait on fetch %d", vnode->update_cnt); in afs_vnode_fetch_status()
309 add_wait_queue(&vnode->update_waitq, &myself); in afs_vnode_fetch_status()
313 if (!test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags)) in afs_vnode_fetch_status()
315 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_vnode_fetch_status()
320 if (vnode->update_cnt == 0) { in afs_vnode_fetch_status()
321 remove_wait_queue(&vnode->update_waitq, in afs_vnode_fetch_status()
327 spin_unlock(&vnode->lock); in afs_vnode_fetch_status()
332 spin_lock(&vnode->lock); in afs_vnode_fetch_status()
335 remove_wait_queue(&vnode->update_waitq, &myself); in afs_vnode_fetch_status()
336 spin_unlock(&vnode->lock); in afs_vnode_fetch_status()
339 return test_bit(AFS_VNODE_DELETED, &vnode->flags) ? in afs_vnode_fetch_status()
345 vnode->update_cnt++; in afs_vnode_fetch_status()
347 spin_unlock(&vnode->lock); in afs_vnode_fetch_status()
353 server = afs_volume_pick_fileserver(vnode); in afs_vnode_fetch_status()
360 ret = afs_fs_fetch_file_status(server, key, vnode, NULL, in afs_vnode_fetch_status()
363 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_fetch_status()
369 afs_cache_permit(vnode, key, acl_order); in afs_vnode_fetch_status()
370 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_fetch_status()
374 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_fetch_status()
377 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_fetch_status()
379 _leave(" = %d [cnt %d]", ret, vnode->update_cnt); in afs_vnode_fetch_status()
383 spin_lock(&vnode->lock); in afs_vnode_fetch_status()
384 vnode->update_cnt--; in afs_vnode_fetch_status()
385 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_fetch_status()
386 spin_unlock(&vnode->lock); in afs_vnode_fetch_status()
387 _leave(" = %ld [cnt %d]", PTR_ERR(server), vnode->update_cnt); in afs_vnode_fetch_status()
395 int afs_vnode_fetch_data(struct afs_vnode *vnode, struct key *key, in afs_vnode_fetch_data() argument
402 vnode->volume->vlocation->vldb.name, in afs_vnode_fetch_data()
403 vnode->fid.vid, in afs_vnode_fetch_data()
404 vnode->fid.vnode, in afs_vnode_fetch_data()
405 vnode->fid.unique, in afs_vnode_fetch_data()
409 spin_lock(&vnode->lock); in afs_vnode_fetch_data()
410 vnode->update_cnt++; in afs_vnode_fetch_data()
411 spin_unlock(&vnode->lock); in afs_vnode_fetch_data()
417 server = afs_volume_pick_fileserver(vnode); in afs_vnode_fetch_data()
423 ret = afs_fs_fetch_data(server, key, vnode, offset, length, in afs_vnode_fetch_data()
426 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_fetch_data()
430 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_fetch_data()
433 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_fetch_data()
440 spin_lock(&vnode->lock); in afs_vnode_fetch_data()
441 vnode->update_cnt--; in afs_vnode_fetch_data()
442 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_fetch_data()
443 spin_unlock(&vnode->lock); in afs_vnode_fetch_data()
450 int afs_vnode_create(struct afs_vnode *vnode, struct key *key, in afs_vnode_create() argument
459 vnode->volume->vlocation->vldb.name, in afs_vnode_create()
460 vnode->fid.vid, in afs_vnode_create()
461 vnode->fid.vnode, in afs_vnode_create()
462 vnode->fid.unique, in afs_vnode_create()
467 spin_lock(&vnode->lock); in afs_vnode_create()
468 vnode->update_cnt++; in afs_vnode_create()
469 spin_unlock(&vnode->lock); in afs_vnode_create()
473 server = afs_volume_pick_fileserver(vnode); in afs_vnode_create()
479 ret = afs_fs_create(server, key, vnode, name, mode, newfid, in afs_vnode_create()
482 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_create()
486 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_create()
489 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_create()
493 _leave(" = %d [cnt %d]", ret, vnode->update_cnt); in afs_vnode_create()
497 spin_lock(&vnode->lock); in afs_vnode_create()
498 vnode->update_cnt--; in afs_vnode_create()
499 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_create()
500 spin_unlock(&vnode->lock); in afs_vnode_create()
501 _leave(" = %ld [cnt %d]", PTR_ERR(server), vnode->update_cnt); in afs_vnode_create()
508 int afs_vnode_remove(struct afs_vnode *vnode, struct key *key, const char *name, in afs_vnode_remove() argument
515 vnode->volume->vlocation->vldb.name, in afs_vnode_remove()
516 vnode->fid.vid, in afs_vnode_remove()
517 vnode->fid.vnode, in afs_vnode_remove()
518 vnode->fid.unique, in afs_vnode_remove()
523 spin_lock(&vnode->lock); in afs_vnode_remove()
524 vnode->update_cnt++; in afs_vnode_remove()
525 spin_unlock(&vnode->lock); in afs_vnode_remove()
529 server = afs_volume_pick_fileserver(vnode); in afs_vnode_remove()
535 ret = afs_fs_remove(server, key, vnode, name, isdir, in afs_vnode_remove()
538 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_remove()
542 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_remove()
545 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_remove()
548 _leave(" = %d [cnt %d]", ret, vnode->update_cnt); in afs_vnode_remove()
552 spin_lock(&vnode->lock); in afs_vnode_remove()
553 vnode->update_cnt--; in afs_vnode_remove()
554 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_remove()
555 spin_unlock(&vnode->lock); in afs_vnode_remove()
556 _leave(" = %ld [cnt %d]", PTR_ERR(server), vnode->update_cnt); in afs_vnode_remove()
563 int afs_vnode_link(struct afs_vnode *dvnode, struct afs_vnode *vnode, in afs_vnode_link() argument
572 dvnode->fid.vnode, in afs_vnode_link()
574 vnode->volume->vlocation->vldb.name, in afs_vnode_link()
575 vnode->fid.vid, in afs_vnode_link()
576 vnode->fid.vnode, in afs_vnode_link()
577 vnode->fid.unique, in afs_vnode_link()
582 spin_lock(&vnode->lock); in afs_vnode_link()
583 vnode->update_cnt++; in afs_vnode_link()
584 spin_unlock(&vnode->lock); in afs_vnode_link()
597 ret = afs_fs_link(server, key, dvnode, vnode, name, in afs_vnode_link()
604 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_link()
608 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_link()
612 _leave(" = %d [cnt %d]", ret, vnode->update_cnt); in afs_vnode_link()
616 spin_lock(&vnode->lock); in afs_vnode_link()
617 vnode->update_cnt--; in afs_vnode_link()
618 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_link()
619 spin_unlock(&vnode->lock); in afs_vnode_link()
624 _leave(" = %ld [cnt %d]", PTR_ERR(server), vnode->update_cnt); in afs_vnode_link()
631 int afs_vnode_symlink(struct afs_vnode *vnode, struct key *key, in afs_vnode_symlink() argument
641 vnode->volume->vlocation->vldb.name, in afs_vnode_symlink()
642 vnode->fid.vid, in afs_vnode_symlink()
643 vnode->fid.vnode, in afs_vnode_symlink()
644 vnode->fid.unique, in afs_vnode_symlink()
649 spin_lock(&vnode->lock); in afs_vnode_symlink()
650 vnode->update_cnt++; in afs_vnode_symlink()
651 spin_unlock(&vnode->lock); in afs_vnode_symlink()
655 server = afs_volume_pick_fileserver(vnode); in afs_vnode_symlink()
661 ret = afs_fs_symlink(server, key, vnode, name, content, in afs_vnode_symlink()
664 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_symlink()
668 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_symlink()
671 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_symlink()
675 _leave(" = %d [cnt %d]", ret, vnode->update_cnt); in afs_vnode_symlink()
679 spin_lock(&vnode->lock); in afs_vnode_symlink()
680 vnode->update_cnt--; in afs_vnode_symlink()
681 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_symlink()
682 spin_unlock(&vnode->lock); in afs_vnode_symlink()
683 _leave(" = %ld [cnt %d]", PTR_ERR(server), vnode->update_cnt); in afs_vnode_symlink()
702 orig_dvnode->fid.vnode, in afs_vnode_rename()
706 new_dvnode->fid.vnode, in afs_vnode_rename()
773 struct afs_vnode *vnode = wb->vnode; in afs_vnode_store_data() local
777 vnode->volume->vlocation->vldb.name, in afs_vnode_store_data()
778 vnode->fid.vid, in afs_vnode_store_data()
779 vnode->fid.vnode, in afs_vnode_store_data()
780 vnode->fid.unique, in afs_vnode_store_data()
785 spin_lock(&vnode->lock); in afs_vnode_store_data()
786 vnode->update_cnt++; in afs_vnode_store_data()
787 spin_unlock(&vnode->lock); in afs_vnode_store_data()
791 server = afs_volume_pick_fileserver(vnode); in afs_vnode_store_data()
800 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_store_data()
804 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_store_data()
807 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_store_data()
814 spin_lock(&vnode->lock); in afs_vnode_store_data()
815 vnode->update_cnt--; in afs_vnode_store_data()
816 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_store_data()
817 spin_unlock(&vnode->lock); in afs_vnode_store_data()
824 int afs_vnode_setattr(struct afs_vnode *vnode, struct key *key, in afs_vnode_setattr() argument
831 vnode->volume->vlocation->vldb.name, in afs_vnode_setattr()
832 vnode->fid.vid, in afs_vnode_setattr()
833 vnode->fid.vnode, in afs_vnode_setattr()
834 vnode->fid.unique, in afs_vnode_setattr()
838 spin_lock(&vnode->lock); in afs_vnode_setattr()
839 vnode->update_cnt++; in afs_vnode_setattr()
840 spin_unlock(&vnode->lock); in afs_vnode_setattr()
844 server = afs_volume_pick_fileserver(vnode); in afs_vnode_setattr()
850 ret = afs_fs_setattr(server, key, vnode, attr, &afs_sync_call); in afs_vnode_setattr()
852 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_setattr()
856 afs_vnode_finalise_status_update(vnode, server); in afs_vnode_setattr()
859 afs_vnode_status_update_failed(vnode, ret); in afs_vnode_setattr()
866 spin_lock(&vnode->lock); in afs_vnode_setattr()
867 vnode->update_cnt--; in afs_vnode_setattr()
868 ASSERTCMP(vnode->update_cnt, >=, 0); in afs_vnode_setattr()
869 spin_unlock(&vnode->lock); in afs_vnode_setattr()
876 int afs_vnode_get_volume_status(struct afs_vnode *vnode, struct key *key, in afs_vnode_get_volume_status() argument
883 vnode->volume->vlocation->vldb.name, in afs_vnode_get_volume_status()
884 vnode->fid.vid, in afs_vnode_get_volume_status()
885 vnode->fid.vnode, in afs_vnode_get_volume_status()
886 vnode->fid.unique, in afs_vnode_get_volume_status()
891 server = afs_volume_pick_fileserver(vnode); in afs_vnode_get_volume_status()
897 ret = afs_fs_get_volume_status(server, key, vnode, vs, &afs_sync_call); in afs_vnode_get_volume_status()
899 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_get_volume_status()
915 int afs_vnode_set_lock(struct afs_vnode *vnode, struct key *key, in afs_vnode_set_lock() argument
922 vnode->volume->vlocation->vldb.name, in afs_vnode_set_lock()
923 vnode->fid.vid, in afs_vnode_set_lock()
924 vnode->fid.vnode, in afs_vnode_set_lock()
925 vnode->fid.unique, in afs_vnode_set_lock()
930 server = afs_volume_pick_fileserver(vnode); in afs_vnode_set_lock()
936 ret = afs_fs_set_lock(server, key, vnode, type, &afs_sync_call); in afs_vnode_set_lock()
938 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_set_lock()
954 int afs_vnode_extend_lock(struct afs_vnode *vnode, struct key *key) in afs_vnode_extend_lock() argument
960 vnode->volume->vlocation->vldb.name, in afs_vnode_extend_lock()
961 vnode->fid.vid, in afs_vnode_extend_lock()
962 vnode->fid.vnode, in afs_vnode_extend_lock()
963 vnode->fid.unique, in afs_vnode_extend_lock()
968 server = afs_volume_pick_fileserver(vnode); in afs_vnode_extend_lock()
974 ret = afs_fs_extend_lock(server, key, vnode, &afs_sync_call); in afs_vnode_extend_lock()
976 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_extend_lock()
992 int afs_vnode_release_lock(struct afs_vnode *vnode, struct key *key) in afs_vnode_release_lock() argument
998 vnode->volume->vlocation->vldb.name, in afs_vnode_release_lock()
999 vnode->fid.vid, in afs_vnode_release_lock()
1000 vnode->fid.vnode, in afs_vnode_release_lock()
1001 vnode->fid.unique, in afs_vnode_release_lock()
1006 server = afs_volume_pick_fileserver(vnode); in afs_vnode_release_lock()
1012 ret = afs_fs_release_lock(server, key, vnode, &afs_sync_call); in afs_vnode_release_lock()
1014 } while (!afs_volume_release_fileserver(vnode, server, ret)); in afs_vnode_release_lock()