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()
202 struct orangefs_bufmap *bufmap; in orangefs_bufmap_shift_query() local
205 bufmap = __orangefs_bufmap; in orangefs_bufmap_shift_query()
206 if (bufmap) in orangefs_bufmap_shift_query()
207 shift = bufmap->desc_shift; in orangefs_bufmap_shift_query()
218 struct orangefs_bufmap *bufmap; in orangefs_bufmap_alloc() local
220 bufmap = kzalloc(sizeof(*bufmap), GFP_KERNEL); in orangefs_bufmap_alloc()
221 if (!bufmap) in orangefs_bufmap_alloc()
224 bufmap->total_size = user_desc->total_size; in orangefs_bufmap_alloc()
225 bufmap->desc_count = user_desc->count; in orangefs_bufmap_alloc()
226 bufmap->desc_size = user_desc->size; in orangefs_bufmap_alloc()
227 bufmap->desc_shift = ilog2(bufmap->desc_size); in orangefs_bufmap_alloc()
229 bufmap->buffer_index_array = bitmap_zalloc(bufmap->desc_count, GFP_KERNEL); in orangefs_bufmap_alloc()
230 if (!bufmap->buffer_index_array) in orangefs_bufmap_alloc()
233 bufmap->desc_array = in orangefs_bufmap_alloc()
234 kcalloc(bufmap->desc_count, sizeof(struct orangefs_bufmap_desc), in orangefs_bufmap_alloc()
236 if (!bufmap->desc_array) in orangefs_bufmap_alloc()
239 bufmap->page_count = bufmap->total_size / PAGE_SIZE; in orangefs_bufmap_alloc()
242 bufmap->page_array = in orangefs_bufmap_alloc()
243 kcalloc(bufmap->page_count, sizeof(struct page *), GFP_KERNEL); in orangefs_bufmap_alloc()
244 if (!bufmap->page_array) in orangefs_bufmap_alloc()
247 return bufmap; in orangefs_bufmap_alloc()
250 kfree(bufmap->desc_array); in orangefs_bufmap_alloc()
252 bitmap_free(bufmap->buffer_index_array); in orangefs_bufmap_alloc()
254 kfree(bufmap); in orangefs_bufmap_alloc()
260 orangefs_bufmap_map(struct orangefs_bufmap *bufmap, in orangefs_bufmap_map() argument
263 int pages_per_desc = bufmap->desc_size / PAGE_SIZE; in orangefs_bufmap_map()
268 bufmap->page_count, FOLL_WRITE, bufmap->page_array); in orangefs_bufmap_map()
273 if (ret != bufmap->page_count) { in orangefs_bufmap_map()
275 bufmap->page_count, ret); in orangefs_bufmap_map()
278 SetPageError(bufmap->page_array[i]); in orangefs_bufmap_map()
279 unpin_user_page(bufmap->page_array[i]); in orangefs_bufmap_map()
290 for (i = 0; i < bufmap->page_count; i++) in orangefs_bufmap_map()
291 flush_dcache_page(bufmap->page_array[i]); in orangefs_bufmap_map()
294 for (offset = 0, i = 0; i < bufmap->desc_count; i++) { in orangefs_bufmap_map()
295 bufmap->desc_array[i].page_array = &bufmap->page_array[offset]; in orangefs_bufmap_map()
296 bufmap->desc_array[i].array_count = pages_per_desc; in orangefs_bufmap_map()
297 bufmap->desc_array[i].uaddr = in orangefs_bufmap_map()
314 struct orangefs_bufmap *bufmap; in orangefs_bufmap_initialize() local
363 bufmap = orangefs_bufmap_alloc(user_desc); in orangefs_bufmap_initialize()
364 if (!bufmap) in orangefs_bufmap_initialize()
367 ret = orangefs_bufmap_map(bufmap, user_desc); in orangefs_bufmap_initialize()
379 __orangefs_bufmap = bufmap; in orangefs_bufmap_initialize()
381 bufmap->desc_count, in orangefs_bufmap_initialize()
382 bufmap->buffer_index_array); in orangefs_bufmap_initialize()
385 bufmap->readdir_index_array); in orangefs_bufmap_initialize()
393 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_initialize()
395 orangefs_bufmap_free(bufmap); in orangefs_bufmap_initialize()
410 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_finalize() local
411 if (!bufmap) in orangefs_bufmap_finalize()
422 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_run_down() local
423 if (!bufmap) in orangefs_bufmap_run_down()
430 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_run_down()
431 orangefs_bufmap_free(bufmap); in orangefs_bufmap_run_down()