Lines Matching refs:bufmap
169 orangefs_bufmap_unmap(struct orangefs_bufmap *bufmap) in orangefs_bufmap_unmap() argument
173 for (i = 0; i < bufmap->page_count; i++) in orangefs_bufmap_unmap()
174 put_page(bufmap->page_array[i]); in orangefs_bufmap_unmap()
178 orangefs_bufmap_free(struct orangefs_bufmap *bufmap) in orangefs_bufmap_free() argument
180 kfree(bufmap->page_array); in orangefs_bufmap_free()
181 kfree(bufmap->desc_array); in orangefs_bufmap_free()
182 kfree(bufmap->buffer_index_array); in orangefs_bufmap_free()
183 kfree(bufmap); in orangefs_bufmap_free()
193 struct orangefs_bufmap *bufmap; in orangefs_bufmap_size_query() local
196 bufmap = __orangefs_bufmap; in orangefs_bufmap_size_query()
197 if (bufmap) in orangefs_bufmap_size_query()
198 size = bufmap->desc_size; in orangefs_bufmap_size_query()
205 struct orangefs_bufmap *bufmap; in orangefs_bufmap_shift_query() local
208 bufmap = __orangefs_bufmap; in orangefs_bufmap_shift_query()
209 if (bufmap) in orangefs_bufmap_shift_query()
210 shift = bufmap->desc_shift; in orangefs_bufmap_shift_query()
221 struct orangefs_bufmap *bufmap; in orangefs_bufmap_alloc() local
223 bufmap = kzalloc(sizeof(*bufmap), GFP_KERNEL); in orangefs_bufmap_alloc()
224 if (!bufmap) in orangefs_bufmap_alloc()
227 bufmap->total_size = user_desc->total_size; in orangefs_bufmap_alloc()
228 bufmap->desc_count = user_desc->count; in orangefs_bufmap_alloc()
229 bufmap->desc_size = user_desc->size; in orangefs_bufmap_alloc()
230 bufmap->desc_shift = ilog2(bufmap->desc_size); in orangefs_bufmap_alloc()
232 bufmap->buffer_index_array = in orangefs_bufmap_alloc()
233 kzalloc(DIV_ROUND_UP(bufmap->desc_count, BITS_PER_LONG), GFP_KERNEL); in orangefs_bufmap_alloc()
234 if (!bufmap->buffer_index_array) in orangefs_bufmap_alloc()
237 bufmap->desc_array = in orangefs_bufmap_alloc()
238 kcalloc(bufmap->desc_count, sizeof(struct orangefs_bufmap_desc), in orangefs_bufmap_alloc()
240 if (!bufmap->desc_array) in orangefs_bufmap_alloc()
243 bufmap->page_count = bufmap->total_size / PAGE_SIZE; in orangefs_bufmap_alloc()
246 bufmap->page_array = in orangefs_bufmap_alloc()
247 kcalloc(bufmap->page_count, sizeof(struct page *), GFP_KERNEL); in orangefs_bufmap_alloc()
248 if (!bufmap->page_array) in orangefs_bufmap_alloc()
251 return bufmap; in orangefs_bufmap_alloc()
254 kfree(bufmap->desc_array); in orangefs_bufmap_alloc()
256 kfree(bufmap->buffer_index_array); in orangefs_bufmap_alloc()
258 kfree(bufmap); in orangefs_bufmap_alloc()
264 orangefs_bufmap_map(struct orangefs_bufmap *bufmap, in orangefs_bufmap_map() argument
267 int pages_per_desc = bufmap->desc_size / PAGE_SIZE; in orangefs_bufmap_map()
272 bufmap->page_count, 1, bufmap->page_array); in orangefs_bufmap_map()
277 if (ret != bufmap->page_count) { in orangefs_bufmap_map()
279 bufmap->page_count, ret); in orangefs_bufmap_map()
282 SetPageError(bufmap->page_array[i]); in orangefs_bufmap_map()
283 put_page(bufmap->page_array[i]); in orangefs_bufmap_map()
294 for (i = 0; i < bufmap->page_count; i++) in orangefs_bufmap_map()
295 flush_dcache_page(bufmap->page_array[i]); in orangefs_bufmap_map()
298 for (offset = 0, i = 0; i < bufmap->desc_count; i++) { in orangefs_bufmap_map()
299 bufmap->desc_array[i].page_array = &bufmap->page_array[offset]; in orangefs_bufmap_map()
300 bufmap->desc_array[i].array_count = pages_per_desc; in orangefs_bufmap_map()
301 bufmap->desc_array[i].uaddr = in orangefs_bufmap_map()
318 struct orangefs_bufmap *bufmap; in orangefs_bufmap_initialize() local
367 bufmap = orangefs_bufmap_alloc(user_desc); in orangefs_bufmap_initialize()
368 if (!bufmap) in orangefs_bufmap_initialize()
371 ret = orangefs_bufmap_map(bufmap, user_desc); in orangefs_bufmap_initialize()
383 __orangefs_bufmap = bufmap; in orangefs_bufmap_initialize()
385 bufmap->desc_count, in orangefs_bufmap_initialize()
386 bufmap->buffer_index_array); in orangefs_bufmap_initialize()
389 bufmap->readdir_index_array); in orangefs_bufmap_initialize()
397 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_initialize()
399 orangefs_bufmap_free(bufmap); in orangefs_bufmap_initialize()
414 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_finalize() local
415 if (!bufmap) in orangefs_bufmap_finalize()
426 struct orangefs_bufmap *bufmap = __orangefs_bufmap; in orangefs_bufmap_run_down() local
427 if (!bufmap) in orangefs_bufmap_run_down()
434 orangefs_bufmap_unmap(bufmap); in orangefs_bufmap_run_down()
435 orangefs_bufmap_free(bufmap); in orangefs_bufmap_run_down()