Lines Matching refs:rdcp

47 static void build_dir_entry_list(struct autofs_rddir_cache *rdcp,
52 static int autofs_rddir_cache_delete(struct autofs_rddir_cache *rdcp);
53 static int create_dirents(struct autofs_rddir_cache *rdcp, ulong_t offset,
68 struct autofs_rddir_cache *rdcp = NULL; in do_readdir() local
85 error = autofs_rddir_cache_lookup(rda->rda_map, &rdcp); in do_readdir()
89 error = autofs_rddir_cache_lookup(rda->rda_map, &rdcp); in do_readdir()
98 OFFSET_BUCKET_SIZE, &rdcp); in do_readdir()
106 assert(rdcp != NULL); in do_readdir()
107 assert(rdcp->in_use); in do_readdir()
109 if (!rdcp->full) { in do_readdir()
110 rw_wrlock(&rdcp->rwlock); in do_readdir()
111 if (!rdcp->full) { in do_readdir()
126 build_dir_entry_list(rdcp, list); in do_readdir()
133 rw_rdlock(&rdcp->rwlock); in do_readdir()
137 error = create_dirents(rdcp, rda->rda_offset, rd); in do_readdir()
139 if (rdcp->offtp) { in do_readdir()
140 free_offset_tbl(rdcp->offtp); in do_readdir()
141 rdcp->offtp = NULL; in do_readdir()
143 if (rdcp->entp) { in do_readdir()
144 free_dir_list(rdcp->entp); in do_readdir()
145 rdcp->entp = NULL; in do_readdir()
147 rdcp->full = 0; in do_readdir()
168 rdcp->ttl = time((time_t *)NULL) + cache_time; in do_readdir()
174 if (rdcp->offtp) { in do_readdir()
175 free_offset_tbl(rdcp->offtp); in do_readdir()
176 rdcp->offtp = NULL; in do_readdir()
178 if (rdcp->entp) { in do_readdir()
179 free_dir_list(rdcp->entp); in do_readdir()
180 rdcp->entp = NULL; in do_readdir()
182 rdcp->full = 0; in do_readdir()
206 rw_unlock(&rdcp->rwlock); in do_readdir()
208 mutex_lock(&rdcp->lock); in do_readdir()
209 rdcp->in_use--; in do_readdir()
210 mutex_unlock(&rdcp->lock); in do_readdir()
212 assert(rdcp->in_use >= 0); in do_readdir()
223 struct autofs_rddir_cache *rdcp, in create_dirents() argument
240 assert(RW_LOCK_HELD(&rdcp->rwlock)); in create_dirents()
241 for (offtp = rdcp->offtp; offtp != NULL; offtp = next) { in create_dirents()
272 trace_prt(1, "%s: offset searches (%d, %d)\n", rdcp->map, x, y); in create_dirents()
471 autofs_rddir_cache_delete(struct autofs_rddir_cache *rdcp) in autofs_rddir_cache_delete() argument
481 if (p == rdcp) { in autofs_rddir_cache_delete()
511 build_dir_entry_list(struct autofs_rddir_cache *rdcp, struct dir_entry *list) in build_dir_entry_list() argument
518 assert(RW_LOCK_HELD(&rdcp->rwlock)); in build_dir_entry_list()
519 assert(rdcp->entp == NULL); in build_dir_entry_list()
520 rdcp->entp = list; in build_dir_entry_list()
534 offset_list += rdcp->bucket_size; in build_dir_entry_list()
543 if (rdcp->offtp == NULL) in build_dir_entry_list()
544 rdcp->offtp = offtp; in build_dir_entry_list()
552 rdcp->full = 1; in build_dir_entry_list()