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 kfree(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 = in orangefs_bufmap_alloc()
230 kzalloc(DIV_ROUND_UP(bufmap->desc_count, BITS_PER_LONG), GFP_KERNEL); in orangefs_bufmap_alloc()
231 if (!bufmap->buffer_index_array) in orangefs_bufmap_alloc()
234 bufmap->desc_array = in orangefs_bufmap_alloc()
235 kcalloc(bufmap->desc_count, sizeof(struct orangefs_bufmap_desc), in orangefs_bufmap_alloc()
237 if (!bufmap->desc_array) in orangefs_bufmap_alloc()
240 bufmap->page_count = bufmap->total_size / PAGE_SIZE; in orangefs_bufmap_alloc()
243 bufmap->page_array = in orangefs_bufmap_alloc()
244 kcalloc(bufmap->page_count, sizeof(struct page *), GFP_KERNEL); in orangefs_bufmap_alloc()
245 if (!bufmap->page_array) in orangefs_bufmap_alloc()
248 return bufmap; in orangefs_bufmap_alloc()
251 kfree(bufmap->desc_array); in orangefs_bufmap_alloc()
253 kfree(bufmap->buffer_index_array); in orangefs_bufmap_alloc()
255 kfree(bufmap); in orangefs_bufmap_alloc()
261 orangefs_bufmap_map(struct orangefs_bufmap *bufmap, in orangefs_bufmap_map() argument
264 int pages_per_desc = bufmap->desc_size / PAGE_SIZE; in orangefs_bufmap_map()
269 bufmap->page_count, FOLL_WRITE, bufmap->page_array); in orangefs_bufmap_map()
274 if (ret != bufmap->page_count) { in orangefs_bufmap_map()
276 bufmap->page_count, ret); in orangefs_bufmap_map()
279 SetPageError(bufmap->page_array[i]); in orangefs_bufmap_map()
280 unpin_user_page(bufmap->page_array[i]); in orangefs_bufmap_map()
291 for (i = 0; i < bufmap->page_count; i++) in orangefs_bufmap_map()
292 flush_dcache_page(bufmap->page_array[i]); in orangefs_bufmap_map()
295 for (offset = 0, i = 0; i < bufmap->desc_count; i++) { in orangefs_bufmap_map()
296 bufmap->desc_array[i].page_array = &bufmap->page_array[offset]; in orangefs_bufmap_map()
297 bufmap->desc_array[i].array_count = pages_per_desc; in orangefs_bufmap_map()
298 bufmap->desc_array[i].uaddr = in orangefs_bufmap_map()
315 struct orangefs_bufmap *bufmap; in orangefs_bufmap_initialize() local
364 bufmap = orangefs_bufmap_alloc(user_desc); in orangefs_bufmap_initialize()
365 if (!bufmap) in orangefs_bufmap_initialize()
368 ret = orangefs_bufmap_map(bufmap, user_desc); in orangefs_bufmap_initialize()
380 __orangefs_bufmap = bufmap; in orangefs_bufmap_initialize()
382 bufmap->desc_count, in orangefs_bufmap_initialize()
383 bufmap->buffer_index_array); in orangefs_bufmap_initialize()
386 bufmap->readdir_index_array); in orangefs_bufmap_initialize()
394 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_initialize()
396 orangefs_bufmap_free(bufmap); in orangefs_bufmap_initialize()
411 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_finalize() local
412 if (!bufmap) in orangefs_bufmap_finalize()
423 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_run_down() local
424 if (!bufmap) in orangefs_bufmap_run_down()
431 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_run_down()
432 orangefs_bufmap_free(bufmap); in orangefs_bufmap_run_down()