Lines Matching refs:vnode

24 static void afs_init_fs_cursor(struct afs_fs_cursor *fc, struct afs_vnode *vnode)  in afs_init_fs_cursor()  argument
35 bool afs_begin_vnode_operation(struct afs_fs_cursor *fc, struct afs_vnode *vnode, in afs_begin_vnode_operation() argument
38 afs_init_fs_cursor(fc, vnode); in afs_begin_vnode_operation()
39 fc->vnode = vnode; in afs_begin_vnode_operation()
43 if (mutex_lock_interruptible(&vnode->io_lock) < 0) { in afs_begin_vnode_operation()
49 if (vnode->lock_state != AFS_VNODE_LOCK_NONE) in afs_begin_vnode_operation()
59 struct afs_vnode *vnode) in afs_start_fs_iteration() argument
64 read_lock(&vnode->volume->servers_lock); in afs_start_fs_iteration()
65 fc->server_list = afs_get_serverlist(vnode->volume->servers); in afs_start_fs_iteration()
66 read_unlock(&vnode->volume->servers_lock); in afs_start_fs_iteration()
68 cbi = vnode->cb_interest; in afs_start_fs_iteration()
88 write_seqlock(&vnode->cb_lock); in afs_start_fs_iteration()
89 ASSERTCMP(cbi, ==, vnode->cb_interest); in afs_start_fs_iteration()
90 vnode->cb_interest = NULL; in afs_start_fs_iteration()
91 if (test_and_clear_bit(AFS_VNODE_CB_PROMISED, &vnode->flags)) in afs_start_fs_iteration()
92 vnode->cb_break++; in afs_start_fs_iteration()
93 write_sequnlock(&vnode->cb_lock); in afs_start_fs_iteration()
95 afs_put_cb_interest(afs_v2net(vnode), cbi); in afs_start_fs_iteration()
145 struct afs_vnode *vnode = fc->vnode; in afs_select_fileserver() local
185 write_lock(&vnode->volume->servers_lock); in afs_select_fileserver()
187 write_unlock(&vnode->volume->servers_lock); in afs_select_fileserver()
189 set_bit(AFS_VOLUME_NEEDS_UPDATE, &vnode->volume->flags); in afs_select_fileserver()
190 fc->ac.error = afs_check_volume_status(vnode->volume, fc->key); in afs_select_fileserver()
194 if (test_bit(AFS_VOLUME_DELETED, &vnode->volume->flags)) { in afs_select_fileserver()
202 if (vnode->volume->servers == fc->server_list) { in afs_select_fileserver()
222 if (!test_and_set_bit(AFS_VOLUME_OFFLINE, &vnode->volume->flags)) { in afs_select_fileserver()
223 afs_busy(vnode->volume, fc->ac.abort_code); in afs_select_fileserver()
224 clear_bit(AFS_VOLUME_BUSY, &vnode->volume->flags); in afs_select_fileserver()
246 if (!test_and_set_bit(AFS_VOLUME_BUSY, &vnode->volume->flags)) { in afs_select_fileserver()
247 afs_busy(vnode->volume, fc->ac.abort_code); in afs_select_fileserver()
248 clear_bit(AFS_VOLUME_OFFLINE, &vnode->volume->flags); in afs_select_fileserver()
277 set_bit(AFS_VOLUME_WAIT, &vnode->volume->flags); in afs_select_fileserver()
278 set_bit(AFS_VOLUME_NEEDS_UPDATE, &vnode->volume->flags); in afs_select_fileserver()
279 fc->ac.error = afs_check_volume_status(vnode->volume, fc->key); in afs_select_fileserver()
292 if (vnode->volume->servers == fc->server_list) { in afs_select_fileserver()
300 clear_bit(AFS_VOLUME_OFFLINE, &vnode->volume->flags); in afs_select_fileserver()
301 clear_bit(AFS_VOLUME_BUSY, &vnode->volume->flags); in afs_select_fileserver()
322 afs_put_cb_interest(afs_v2net(vnode), fc->cbi); in afs_select_fileserver()
324 afs_put_serverlist(afs_v2net(vnode), fc->server_list); in afs_select_fileserver()
331 fc->ac.error = afs_check_volume_status(vnode->volume, fc->key); in afs_select_fileserver()
335 if (!afs_start_fs_iteration(fc, vnode)) in afs_select_fileserver()
357 fc->ac.error = afs_register_server_cb_interest(vnode, fc->server_list, in afs_select_fileserver()
362 fc->cbi = afs_get_cb_interest(vnode->cb_interest); in afs_select_fileserver()
411 afs_put_cb_interest(afs_v2net(vnode), fc->cbi); in afs_select_fileserver()
442 struct afs_vnode *vnode = fc->vnode; in afs_select_current_fileserver() local
443 struct afs_cb_interest *cbi = vnode->cb_interest; in afs_select_current_fileserver()
456 fc->cbi = afs_get_cb_interest(vnode->cb_interest); in afs_select_current_fileserver()
514 struct afs_net *net = afs_v2net(fc->vnode); in afs_end_vnode_operation()
517 mutex_unlock(&fc->vnode->io_lock); in afs_end_vnode_operation()