Lines Matching refs:array
154 struct nfs_cache_array_entry array[] __counted_by(size);
206 struct nfs_cache_array *array; in nfs_readdir_folio_init_array() local
208 array = kmap_local_folio(folio, 0); in nfs_readdir_folio_init_array()
209 array->change_attr = change_attr; in nfs_readdir_folio_init_array()
210 array->last_cookie = last_cookie; in nfs_readdir_folio_init_array()
211 array->size = 0; in nfs_readdir_folio_init_array()
212 array->folio_full = 0; in nfs_readdir_folio_init_array()
213 array->folio_is_eof = 0; in nfs_readdir_folio_init_array()
214 array->cookies_are_ordered = 1; in nfs_readdir_folio_init_array()
215 kunmap_local(array); in nfs_readdir_folio_init_array()
223 struct nfs_cache_array *array; in nfs_readdir_clear_array() local
226 array = kmap_local_folio(folio, 0); in nfs_readdir_clear_array()
227 for (i = 0; i < array->size; i++) in nfs_readdir_clear_array()
228 kfree(array->array[i].name); in nfs_readdir_clear_array()
229 array->size = 0; in nfs_readdir_clear_array()
230 kunmap_local(array); in nfs_readdir_clear_array()
257 static u64 nfs_readdir_array_index_cookie(struct nfs_cache_array *array) in nfs_readdir_array_index_cookie() argument
259 return array->size == 0 ? array->last_cookie : array->array[0].cookie; in nfs_readdir_array_index_cookie()
262 static void nfs_readdir_array_set_eof(struct nfs_cache_array *array) in nfs_readdir_array_set_eof() argument
264 array->folio_is_eof = 1; in nfs_readdir_array_set_eof()
265 array->folio_full = 1; in nfs_readdir_array_set_eof()
268 static bool nfs_readdir_array_is_full(struct nfs_cache_array *array) in nfs_readdir_array_is_full() argument
270 return array->folio_full; in nfs_readdir_array_is_full()
300 static int nfs_readdir_array_can_expand(struct nfs_cache_array *array) in nfs_readdir_array_can_expand() argument
302 if (array->folio_full) in nfs_readdir_array_can_expand()
304 if (array->size == nfs_readdir_array_maxentries()) { in nfs_readdir_array_can_expand()
305 array->folio_full = 1; in nfs_readdir_array_can_expand()
315 struct nfs_cache_array *array; in nfs_readdir_folio_array_append() local
322 array = kmap_local_folio(folio, 0); in nfs_readdir_folio_array_append()
325 ret = nfs_readdir_array_can_expand(array); in nfs_readdir_folio_array_append()
331 array->size++; in nfs_readdir_folio_array_append()
332 cache_entry = &array->array[array->size - 1]; in nfs_readdir_folio_array_append()
333 cache_entry->cookie = array->last_cookie; in nfs_readdir_folio_array_append()
338 array->last_cookie = entry->cookie; in nfs_readdir_folio_array_append()
339 if (array->last_cookie <= cache_entry->cookie) in nfs_readdir_folio_array_append()
340 array->cookies_are_ordered = 0; in nfs_readdir_folio_array_append()
342 nfs_readdir_array_set_eof(array); in nfs_readdir_folio_array_append()
344 *cookie = array->last_cookie; in nfs_readdir_folio_array_append()
345 kunmap_local(array); in nfs_readdir_folio_array_append()
371 struct nfs_cache_array *array = kmap_local_folio(folio, 0); in nfs_readdir_folio_validate() local
374 if (array->change_attr != change_attr) in nfs_readdir_folio_validate()
376 if (nfs_readdir_array_index_cookie(array) != last_cookie) in nfs_readdir_folio_validate()
378 kunmap_local(array); in nfs_readdir_folio_validate()
415 struct nfs_cache_array *array; in nfs_readdir_folio_last_cookie() local
418 array = kmap_local_folio(folio, 0); in nfs_readdir_folio_last_cookie()
419 ret = array->last_cookie; in nfs_readdir_folio_last_cookie()
420 kunmap_local(array); in nfs_readdir_folio_last_cookie()
426 struct nfs_cache_array *array; in nfs_readdir_folio_needs_filling() local
429 array = kmap_local_folio(folio, 0); in nfs_readdir_folio_needs_filling()
430 ret = !nfs_readdir_array_is_full(array); in nfs_readdir_folio_needs_filling()
431 kunmap_local(array); in nfs_readdir_folio_needs_filling()
437 struct nfs_cache_array *array; in nfs_readdir_folio_set_eof() local
439 array = kmap_local_folio(folio, 0); in nfs_readdir_folio_set_eof()
440 nfs_readdir_array_set_eof(array); in nfs_readdir_folio_set_eof()
441 kunmap_local(array); in nfs_readdir_folio_set_eof()
480 static void nfs_readdir_seek_next_array(struct nfs_cache_array *array, in nfs_readdir_seek_next_array() argument
483 if (array->folio_full) { in nfs_readdir_seek_next_array()
484 desc->last_cookie = array->last_cookie; in nfs_readdir_seek_next_array()
485 desc->current_index += array->size; in nfs_readdir_seek_next_array()
489 desc->last_cookie = nfs_readdir_array_index_cookie(array); in nfs_readdir_seek_next_array()
499 static int nfs_readdir_search_for_pos(struct nfs_cache_array *array, in nfs_readdir_search_for_pos() argument
507 if (diff >= array->size) { in nfs_readdir_search_for_pos()
508 if (array->folio_is_eof) in nfs_readdir_search_for_pos()
510 nfs_readdir_seek_next_array(array, desc); in nfs_readdir_search_for_pos()
515 desc->dir_cookie = array->array[index].cookie; in nfs_readdir_search_for_pos()
523 static bool nfs_readdir_array_cookie_in_range(struct nfs_cache_array *array, in nfs_readdir_array_cookie_in_range() argument
526 if (!array->cookies_are_ordered) in nfs_readdir_array_cookie_in_range()
529 if (cookie >= array->last_cookie) in nfs_readdir_array_cookie_in_range()
531 if (array->size && cookie < array->array[0].cookie) in nfs_readdir_array_cookie_in_range()
536 static int nfs_readdir_search_for_cookie(struct nfs_cache_array *array, in nfs_readdir_search_for_cookie() argument
542 if (!nfs_readdir_array_cookie_in_range(array, desc->dir_cookie)) in nfs_readdir_search_for_cookie()
545 for (i = 0; i < array->size; i++) { in nfs_readdir_search_for_cookie()
546 if (array->array[i].cookie == desc->dir_cookie) { in nfs_readdir_search_for_cookie()
556 if (array->folio_is_eof) { in nfs_readdir_search_for_cookie()
558 if (desc->dir_cookie == array->last_cookie) in nfs_readdir_search_for_cookie()
561 nfs_readdir_seek_next_array(array, desc); in nfs_readdir_search_for_cookie()
567 struct nfs_cache_array *array; in nfs_readdir_search_array() local
570 array = kmap_local_folio(desc->folio, 0); in nfs_readdir_search_array()
573 status = nfs_readdir_search_for_pos(array, desc); in nfs_readdir_search_array()
575 status = nfs_readdir_search_for_cookie(array, desc); in nfs_readdir_search_array()
577 kunmap_local(array); in nfs_readdir_search_array()
1088 struct nfs_cache_array *array; in nfs_do_filldir() local
1092 array = kmap_local_folio(desc->folio, 0); in nfs_do_filldir()
1093 for (i = desc->cache_entry_index; i < array->size; i++) { in nfs_do_filldir()
1107 ent = &array->array[i]; in nfs_do_filldir()
1114 if (i == array->size - 1) { in nfs_do_filldir()
1115 desc->dir_cookie = array->last_cookie; in nfs_do_filldir()
1116 nfs_readdir_seek_next_array(array, desc); in nfs_do_filldir()
1118 desc->dir_cookie = array->array[i + 1].cookie; in nfs_do_filldir()
1119 desc->last_cookie = array->array[0].cookie; in nfs_do_filldir()
1126 if (array->folio_is_eof) in nfs_do_filldir()
1129 kunmap_local(array); in nfs_do_filldir()