Lines Matching refs:bufmap
169 orangefs_bufmap_unmap(struct orangefs_bufmap *bufmap) in orangefs_bufmap_unmap() argument
171 unpin_user_pages(bufmap->page_array, bufmap->page_count); in orangefs_bufmap_unmap()
175 orangefs_bufmap_free(struct orangefs_bufmap *bufmap) in orangefs_bufmap_free() argument
177 kfree(bufmap->page_array); in orangefs_bufmap_free()
178 kfree(bufmap->desc_array); in orangefs_bufmap_free()
179 bitmap_free(bufmap->buffer_index_array); in orangefs_bufmap_free()
180 kfree(bufmap); in orangefs_bufmap_free()
190 struct orangefs_bufmap *bufmap; in orangefs_bufmap_size_query() local
193 bufmap = __orangefs_bufmap; in orangefs_bufmap_size_query()
194 if (bufmap) in orangefs_bufmap_size_query()
195 size = bufmap->desc_size; in orangefs_bufmap_size_query()
206 struct orangefs_bufmap *bufmap; in orangefs_bufmap_alloc() local
208 bufmap = kzalloc(sizeof(*bufmap), GFP_KERNEL); in orangefs_bufmap_alloc()
209 if (!bufmap) in orangefs_bufmap_alloc()
212 bufmap->total_size = user_desc->total_size; in orangefs_bufmap_alloc()
213 bufmap->desc_count = user_desc->count; in orangefs_bufmap_alloc()
214 bufmap->desc_size = user_desc->size; in orangefs_bufmap_alloc()
215 bufmap->desc_shift = ilog2(bufmap->desc_size); in orangefs_bufmap_alloc()
217 bufmap->buffer_index_array = bitmap_zalloc(bufmap->desc_count, GFP_KERNEL); in orangefs_bufmap_alloc()
218 if (!bufmap->buffer_index_array) in orangefs_bufmap_alloc()
221 bufmap->desc_array = in orangefs_bufmap_alloc()
222 kcalloc(bufmap->desc_count, sizeof(struct orangefs_bufmap_desc), in orangefs_bufmap_alloc()
224 if (!bufmap->desc_array) in orangefs_bufmap_alloc()
227 bufmap->page_count = bufmap->total_size / PAGE_SIZE; in orangefs_bufmap_alloc()
230 bufmap->page_array = in orangefs_bufmap_alloc()
231 kcalloc(bufmap->page_count, sizeof(struct page *), GFP_KERNEL); in orangefs_bufmap_alloc()
232 if (!bufmap->page_array) in orangefs_bufmap_alloc()
235 return bufmap; in orangefs_bufmap_alloc()
238 kfree(bufmap->desc_array); in orangefs_bufmap_alloc()
240 bitmap_free(bufmap->buffer_index_array); in orangefs_bufmap_alloc()
242 kfree(bufmap); in orangefs_bufmap_alloc()
248 orangefs_bufmap_map(struct orangefs_bufmap *bufmap, in orangefs_bufmap_map() argument
251 int pages_per_desc = bufmap->desc_size / PAGE_SIZE; in orangefs_bufmap_map()
256 bufmap->page_count, FOLL_WRITE, bufmap->page_array); in orangefs_bufmap_map()
261 if (ret != bufmap->page_count) { in orangefs_bufmap_map()
263 bufmap->page_count, ret); in orangefs_bufmap_map()
266 unpin_user_page(bufmap->page_array[i]); in orangefs_bufmap_map()
276 for (i = 0; i < bufmap->page_count; i++) in orangefs_bufmap_map()
277 flush_dcache_page(bufmap->page_array[i]); in orangefs_bufmap_map()
280 for (offset = 0, i = 0; i < bufmap->desc_count; i++) { in orangefs_bufmap_map()
281 bufmap->desc_array[i].page_array = &bufmap->page_array[offset]; in orangefs_bufmap_map()
282 bufmap->desc_array[i].array_count = pages_per_desc; in orangefs_bufmap_map()
283 bufmap->desc_array[i].uaddr = in orangefs_bufmap_map()
300 struct orangefs_bufmap *bufmap; in orangefs_bufmap_initialize() local
349 bufmap = orangefs_bufmap_alloc(user_desc); in orangefs_bufmap_initialize()
350 if (!bufmap) in orangefs_bufmap_initialize()
353 ret = orangefs_bufmap_map(bufmap, user_desc); in orangefs_bufmap_initialize()
365 __orangefs_bufmap = bufmap; in orangefs_bufmap_initialize()
367 bufmap->desc_count, in orangefs_bufmap_initialize()
368 bufmap->buffer_index_array); in orangefs_bufmap_initialize()
371 bufmap->readdir_index_array); in orangefs_bufmap_initialize()
379 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_initialize()
381 orangefs_bufmap_free(bufmap); in orangefs_bufmap_initialize()
396 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_finalize() local
397 if (!bufmap) in orangefs_bufmap_finalize()
408 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_run_down() local
409 if (!bufmap) in orangefs_bufmap_run_down()
416 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_run_down()
417 orangefs_bufmap_free(bufmap); in orangefs_bufmap_run_down()