Lines Matching refs:iter
111 static union afs_xdr_dir_block *afs_dir_get_block(struct afs_dir_iter *iter, size_t block) in afs_dir_get_block() argument
114 struct afs_vnode *dvnode = iter->dvnode; in afs_dir_get_block()
117 size_t blend = (block + 1) * AFS_DIR_BLOCK_SIZE, fpos = iter->fpos; in afs_dir_get_block()
131 fq = iter->fq; in afs_dir_get_block()
137 for (int s = iter->fq_slot; s < folioq_count(fq); s++) { in afs_dir_get_block()
145 iter->fq = fq; in afs_dir_get_block()
146 iter->fq_slot = s; in afs_dir_get_block()
147 iter->fpos = fpos; in afs_dir_get_block()
152 iter->fq_slot = 0; in afs_dir_get_block()
156 iter->fq = NULL; in afs_dir_get_block()
157 iter->fq_slot = 0; in afs_dir_get_block()
247 struct afs_dir_iter iter = { .dvnode = vnode }; in afs_edit_dir_add() local
261 meta = afs_dir_get_block(&iter, 0); in afs_edit_dir_add()
266 iter.nr_slots = afs_dir_calc_slots(name->len); in afs_edit_dir_add()
284 meta->meta.alloc_ctrs[b] < iter.nr_slots) in afs_edit_dir_add()
287 block = afs_dir_get_block(&iter, b); in afs_edit_dir_add()
311 slot = afs_find_contig_bits(block, iter.nr_slots); in afs_edit_dir_add()
332 block = afs_dir_get_block(&iter, 0); in afs_edit_dir_add()
350 afs_set_contig_bits(block, slot, iter.nr_slots); in afs_edit_dir_add()
354 meta->meta.alloc_ctrs[b] -= iter.nr_slots; in afs_edit_dir_add()
358 iter.bucket = afs_dir_hash_name(name); in afs_edit_dir_add()
359 de->u.hash_next = meta->meta.hashtable[iter.bucket]; in afs_edit_dir_add()
360 meta->meta.hashtable[iter.bucket] = htons(entry); in afs_edit_dir_add()
398 struct afs_dir_iter iter = { .dvnode = vnode }; in afs_edit_dir_remove() local
415 if (!afs_dir_init_iter(&iter, name)) in afs_edit_dir_remove()
418 meta = afs_dir_find_block(&iter, 0); in afs_edit_dir_remove()
423 found = afs_dir_search_bucket(&iter, name, &fid); in afs_edit_dir_remove()
436 block = afs_dir_find_block(&iter, b); in afs_edit_dir_remove()
452 afs_clear_contig_bits(block, slot, iter.nr_slots); in afs_edit_dir_remove()
456 meta->meta.alloc_ctrs[b] += iter.nr_slots; in afs_edit_dir_remove()
460 memset(de, 0, sizeof(*de) * iter.nr_slots); in afs_edit_dir_remove()
466 if (!iter.prev_entry) { in afs_edit_dir_remove()
467 __be16 prev_next = meta->meta.hashtable[iter.bucket]; in afs_edit_dir_remove()
472 iter.bucket, iter.prev_entry, prev_next, entry, in afs_edit_dir_remove()
476 meta->meta.hashtable[iter.bucket] = next; in afs_edit_dir_remove()
478 unsigned int pb = iter.prev_entry / AFS_DIR_SLOTS_PER_BLOCK; in afs_edit_dir_remove()
479 unsigned int ps = iter.prev_entry % AFS_DIR_SLOTS_PER_BLOCK; in afs_edit_dir_remove()
482 pblock = afs_dir_find_block(&iter, pb); in afs_edit_dir_remove()
491 iter.bucket, iter.prev_entry, prev_next, entry, in afs_edit_dir_remove()
533 struct afs_dir_iter iter = { .dvnode = vnode }; in afs_edit_dir_update_dotdot() local
552 block = afs_dir_get_block(&iter, b); in afs_edit_dir_update_dotdot()
607 struct afs_dir_iter iter = { .dvnode = dvnode }; in afs_mkdir_init_dir() local
618 meta = afs_dir_get_block(&iter, 0); in afs_mkdir_init_dir()