Lines Matching refs:array

148 	struct nfs_cache_array_entry array[];  member
173 static void nfs_readdir_array_init(struct nfs_cache_array *array) in nfs_readdir_array_init() argument
175 memset(array, 0, sizeof(struct nfs_cache_array)); in nfs_readdir_array_init()
180 struct nfs_cache_array *array; in nfs_readdir_page_init_array() local
182 array = kmap_atomic(page); in nfs_readdir_page_init_array()
183 nfs_readdir_array_init(array); in nfs_readdir_page_init_array()
184 array->last_cookie = last_cookie; in nfs_readdir_page_init_array()
185 array->cookies_are_ordered = 1; in nfs_readdir_page_init_array()
186 kunmap_atomic(array); in nfs_readdir_page_init_array()
195 struct nfs_cache_array *array; in nfs_readdir_clear_array() local
198 array = kmap_atomic(page); in nfs_readdir_clear_array()
199 for (i = 0; i < array->size; i++) in nfs_readdir_clear_array()
200 kfree(array->array[i].name); in nfs_readdir_clear_array()
201 nfs_readdir_array_init(array); in nfs_readdir_clear_array()
202 kunmap_atomic(array); in nfs_readdir_clear_array()
222 static void nfs_readdir_array_set_eof(struct nfs_cache_array *array) in nfs_readdir_array_set_eof() argument
224 array->page_is_eof = 1; in nfs_readdir_array_set_eof()
225 array->page_full = 1; in nfs_readdir_array_set_eof()
228 static bool nfs_readdir_array_is_full(struct nfs_cache_array *array) in nfs_readdir_array_is_full() argument
230 return array->page_full; in nfs_readdir_array_is_full()
254 static int nfs_readdir_array_can_expand(struct nfs_cache_array *array) in nfs_readdir_array_can_expand() argument
258 if (array->page_full) in nfs_readdir_array_can_expand()
260 cache_entry = &array->array[array->size + 1]; in nfs_readdir_array_can_expand()
261 if ((char *)cache_entry - (char *)array > PAGE_SIZE) { in nfs_readdir_array_can_expand()
262 array->page_full = 1; in nfs_readdir_array_can_expand()
271 struct nfs_cache_array *array; in nfs_readdir_add_to_array() local
280 array = kmap_atomic(page); in nfs_readdir_add_to_array()
281 ret = nfs_readdir_array_can_expand(array); in nfs_readdir_add_to_array()
287 cache_entry = &array->array[array->size]; in nfs_readdir_add_to_array()
293 array->last_cookie = entry->cookie; in nfs_readdir_add_to_array()
294 if (array->last_cookie <= cache_entry->cookie) in nfs_readdir_add_to_array()
295 array->cookies_are_ordered = 0; in nfs_readdir_add_to_array()
296 array->size++; in nfs_readdir_add_to_array()
298 nfs_readdir_array_set_eof(array); in nfs_readdir_add_to_array()
300 kunmap_atomic(array); in nfs_readdir_add_to_array()
322 struct nfs_cache_array *array; in nfs_readdir_page_last_cookie() local
325 array = kmap_atomic(page); in nfs_readdir_page_last_cookie()
326 ret = array->last_cookie; in nfs_readdir_page_last_cookie()
327 kunmap_atomic(array); in nfs_readdir_page_last_cookie()
333 struct nfs_cache_array *array; in nfs_readdir_page_needs_filling() local
336 array = kmap_atomic(page); in nfs_readdir_page_needs_filling()
337 ret = !nfs_readdir_array_is_full(array); in nfs_readdir_page_needs_filling()
338 kunmap_atomic(array); in nfs_readdir_page_needs_filling()
344 struct nfs_cache_array *array; in nfs_readdir_page_set_eof() local
346 array = kmap_atomic(page); in nfs_readdir_page_set_eof()
347 nfs_readdir_array_set_eof(array); in nfs_readdir_page_set_eof()
348 kunmap_atomic(array); in nfs_readdir_page_set_eof()
390 static int nfs_readdir_search_for_pos(struct nfs_cache_array *array, in nfs_readdir_search_for_pos() argument
398 if (diff >= array->size) { in nfs_readdir_search_for_pos()
399 if (array->page_is_eof) in nfs_readdir_search_for_pos()
405 desc->dir_cookie = array->array[index].cookie; in nfs_readdir_search_for_pos()
423 static bool nfs_readdir_array_cookie_in_range(struct nfs_cache_array *array, in nfs_readdir_array_cookie_in_range() argument
426 if (!array->cookies_are_ordered) in nfs_readdir_array_cookie_in_range()
429 if (cookie >= array->last_cookie) in nfs_readdir_array_cookie_in_range()
431 if (array->size && cookie < array->array[0].cookie) in nfs_readdir_array_cookie_in_range()
436 static int nfs_readdir_search_for_cookie(struct nfs_cache_array *array, in nfs_readdir_search_for_cookie() argument
443 if (!nfs_readdir_array_cookie_in_range(array, desc->dir_cookie)) in nfs_readdir_search_for_cookie()
446 for (i = 0; i < array->size; i++) { in nfs_readdir_search_for_cookie()
447 if (array->array[i].cookie == desc->dir_cookie) { in nfs_readdir_search_for_cookie()
462 desc->file, array->array[i].name, desc->dir_cookie); in nfs_readdir_search_for_cookie()
480 if (array->page_is_eof) { in nfs_readdir_search_for_cookie()
482 if (desc->dir_cookie == array->last_cookie) in nfs_readdir_search_for_cookie()
491 struct nfs_cache_array *array; in nfs_readdir_search_array() local
494 array = kmap_atomic(desc->page); in nfs_readdir_search_array()
497 status = nfs_readdir_search_for_pos(array, desc); in nfs_readdir_search_array()
499 status = nfs_readdir_search_for_cookie(array, desc); in nfs_readdir_search_array()
502 desc->last_cookie = array->last_cookie; in nfs_readdir_search_array()
503 desc->current_index += array->size; in nfs_readdir_search_array()
506 kunmap_atomic(array); in nfs_readdir_search_array()
980 struct nfs_cache_array *array; in nfs_do_filldir() local
983 array = kmap(desc->page); in nfs_do_filldir()
984 for (i = desc->cache_entry_index; i < array->size; i++) { in nfs_do_filldir()
987 ent = &array->array[i]; in nfs_do_filldir()
994 if (i < (array->size-1)) in nfs_do_filldir()
995 desc->dir_cookie = array->array[i+1].cookie; in nfs_do_filldir()
997 desc->dir_cookie = array->last_cookie; in nfs_do_filldir()
1005 if (array->page_is_eof) in nfs_do_filldir()