Lines Matching refs:vnode

40 	struct afs_vnode *vnode;  in afs_init_callback_state()  local
48 vnode = rb_entry(server->cb_promises.rb_node, in afs_init_callback_state()
51 vnode->fid.vid, vnode->fid.vnode, vnode->fid.unique); in afs_init_callback_state()
52 rb_erase(&vnode->cb_promise, &server->cb_promises); in afs_init_callback_state()
53 vnode->cb_promised = false; in afs_init_callback_state()
65 struct afs_vnode *vnode = in afs_broken_callback_work() local
70 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_broken_callback_work()
75 if (!mutex_trylock(&vnode->validate_lock)) in afs_broken_callback_work()
78 if (test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags)) { in afs_broken_callback_work()
79 if (S_ISDIR(vnode->vfs_inode.i_mode)) in afs_broken_callback_work()
80 afs_clear_permits(vnode); in afs_broken_callback_work()
82 if (afs_vnode_fetch_status(vnode, NULL, NULL) < 0) in afs_broken_callback_work()
85 if (test_bit(AFS_VNODE_DELETED, &vnode->flags)) in afs_broken_callback_work()
90 if (test_and_clear_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) in afs_broken_callback_work()
91 afs_zap_data(vnode); in afs_broken_callback_work()
95 mutex_unlock(&vnode->validate_lock); in afs_broken_callback_work()
100 if (test_bit(AFS_VNODE_CB_BROKEN, &vnode->flags)) { in afs_broken_callback_work()
102 queue_work(afs_callback_update_worker, &vnode->cb_broken_work); in afs_broken_callback_work()
111 struct afs_vnode *vnode) in afs_break_callback() argument
115 set_bit(AFS_VNODE_CB_BROKEN, &vnode->flags); in afs_break_callback()
117 if (vnode->cb_promised) { in afs_break_callback()
118 spin_lock(&vnode->lock); in afs_break_callback()
123 if (vnode->cb_promised) { in afs_break_callback()
124 rb_erase(&vnode->cb_promise, &server->cb_promises); in afs_break_callback()
125 vnode->cb_promised = false; in afs_break_callback()
129 queue_work(afs_callback_update_worker, &vnode->cb_broken_work); in afs_break_callback()
130 if (list_empty(&vnode->granted_locks) && in afs_break_callback()
131 !list_empty(&vnode->pending_locks)) in afs_break_callback()
132 afs_lock_may_be_available(vnode); in afs_break_callback()
133 spin_unlock(&vnode->lock); in afs_break_callback()
146 struct afs_vnode *vnode; in afs_break_one_callback() local
153 vnode = rb_entry(p, struct afs_vnode, server_rb); in afs_break_one_callback()
154 if (fid->vid < vnode->fid.vid) in afs_break_one_callback()
156 else if (fid->vid > vnode->fid.vid) in afs_break_one_callback()
158 else if (fid->vnode < vnode->fid.vnode) in afs_break_one_callback()
160 else if (fid->vnode > vnode->fid.vnode) in afs_break_one_callback()
162 else if (fid->unique < vnode->fid.unique) in afs_break_one_callback()
164 else if (fid->unique > vnode->fid.unique) in afs_break_one_callback()
180 ASSERTCMP(server, ==, vnode->server); in afs_break_one_callback()
182 if (!igrab(AFS_VNODE_TO_I(vnode))) in afs_break_one_callback()
186 afs_break_callback(server, vnode); in afs_break_one_callback()
187 iput(&vnode->vfs_inode); in afs_break_one_callback()
205 callbacks->fid.vnode, in afs_break_callbacks()
223 struct afs_vnode *vnode) in afs_do_give_up_callback() argument
227 _enter("%p,%p", server, vnode); in afs_do_give_up_callback()
230 cb->fid = vnode->fid; in afs_do_give_up_callback()
231 cb->version = vnode->cb_version; in afs_do_give_up_callback()
232 cb->expiry = vnode->cb_expiry; in afs_do_give_up_callback()
233 cb->type = vnode->cb_type; in afs_do_give_up_callback()
254 rb_erase(&vnode->cb_promise, &server->cb_promises); in afs_do_give_up_callback()
255 vnode->cb_promised = false; in afs_do_give_up_callback()
262 void afs_discard_callback_on_delete(struct afs_vnode *vnode) in afs_discard_callback_on_delete() argument
264 struct afs_server *server = vnode->server; in afs_discard_callback_on_delete()
266 _enter("%d", vnode->cb_promised); in afs_discard_callback_on_delete()
268 if (!vnode->cb_promised) { in afs_discard_callback_on_delete()
276 if (vnode->cb_promised) { in afs_discard_callback_on_delete()
278 rb_erase(&vnode->cb_promise, &server->cb_promises); in afs_discard_callback_on_delete()
279 vnode->cb_promised = false; in afs_discard_callback_on_delete()
289 void afs_give_up_callback(struct afs_vnode *vnode) in afs_give_up_callback() argument
291 struct afs_server *server = vnode->server; in afs_give_up_callback()
295 _enter("%d", vnode->cb_promised); in afs_give_up_callback()
297 _debug("GIVE UP INODE %p", &vnode->vfs_inode); in afs_give_up_callback()
299 if (!vnode->cb_promised) { in afs_give_up_callback()
307 if (vnode->cb_promised && afs_breakring_space(server) == 0) { in afs_give_up_callback()
311 if (!vnode->cb_promised || in afs_give_up_callback()
324 if (vnode->cb_promised) in afs_give_up_callback()
325 afs_do_give_up_callback(server, vnode); in afs_give_up_callback()
364 struct afs_vnode *vnode, *xvnode;
384 vnode = rb_entry(rb_first(&server->cb_promises),
386 if (atomic_read(&vnode->usage) > 0)
388 rb_erase(&vnode->cb_promise, &server->cb_promises);
389 vnode->cb_promised = false;
392 timeout = vnode->update_at - now;
401 list_del_init(&vnode->update);
402 atomic_inc(&vnode->usage);
406 _debug("update %s", vnode->vldb.name);
407 vnode->state = AFS_VL_UPDATING;
408 vnode->upd_rej_cnt = 0;
409 vnode->upd_busy_cnt = 0;
415 vnode->state = AFS_VL_UPDATING;
418 vnode->state = AFS_VL_VOLUME_DELETED;
421 vnode->state = AFS_VL_UNCERTAIN;
427 vnode->update_at = get_seconds() + afs_vnode_update_timeout;
438 if (vnode->update_at <= xvnode->update_at)
439 vnode->update_at = xvnode->update_at + 1;
449 list_add_tail(&vnode->update, &server->cb_promises);