• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/ceph/

Lines Matching refs:pages

26  *    user pages directly.
28 * fsync() flushes and waits on dirty pages, but just queues metadata
273 * build a vector of user pages
279 struct page **pages;
282 pages = kmalloc(sizeof(*pages) * num_pages, GFP_NOFS);
283 if (!pages)
288 num_pages, 0, 0, pages, NULL);
292 return pages;
295 kfree(pages);
299 static void put_page_vector(struct page **pages, int num_pages)
304 put_page(pages[i]);
305 kfree(pages);
308 void ceph_release_page_vector(struct page **pages, int num_pages)
313 __free_pages(pages[i], 0);
314 kfree(pages);
318 * allocate a vector new pages
322 struct page **pages;
325 pages = kmalloc(sizeof(*pages) * num_pages, flags);
326 if (!pages)
329 pages[i] = __page_cache_alloc(flags);
330 if (pages[i] == NULL) {
331 ceph_release_page_vector(pages, i);
335 return pages;
341 static int copy_user_to_page_vector(struct page **pages,
352 bad = copy_from_user(page_address(pages[i]) + po, data, l);
369 static int copy_page_vector_to_user(struct page **pages, char __user *data,
379 bad = copy_to_user(data, page_address(pages[i]) + po, l);
398 static void zero_page_vector_range(int off, int len, struct page **pages)
409 dout("zeroing %d %p head from %d\n", i, pages[i],
411 zero_user_segment(pages[i], off, end);
416 dout("zeroing %d %p len=%d\n", i, pages[i], len);
417 zero_user_segment(pages[i], 0, PAGE_CACHE_SIZE);
423 dout("zeroing %d %p tail to %d\n", i, pages[i], (int)len);
424 zero_user_segment(pages[i], 0, len);
438 struct page **pages, int num_pages,
456 page_pos = pages;
481 pos - off - read, pages);
499 pages);
517 * buffer to osd, or directly to user pages (if O_DIRECT).
525 struct page **pages;
534 pages = get_direct_page_vector(data, num_pages, off, len);
537 * flush any page cache pages in this range. this
543 pages = ceph_alloc_page_vector(num_pages, GFP_NOFS);
545 if (IS_ERR(pages))
546 return PTR_ERR(pages);
552 ret = striped_read(inode, off, len, pages, num_pages, checkeof);
555 ret = copy_page_vector_to_user(pages, data, off, ret);
561 put_page_vector(pages, num_pages);
563 ceph_release_page_vector(pages, num_pages);
585 * Synchronous write, straight from __user pointer or user pages (if
599 struct page **pages;
658 pages = get_direct_page_vector(data, num_pages, pos, len);
659 if (IS_ERR(pages)) {
660 ret = PTR_ERR(pages);
665 * throw out any page cache pages in this range. this
671 pages = ceph_alloc_page_vector(num_pages, GFP_NOFS);
672 if (IS_ERR(pages)) {
673 ret = PTR_ERR(pages);
676 ret = copy_user_to_page_vector(pages, data, pos, len);
678 ceph_release_page_vector(pages, num_pages);
688 req->r_pages = pages;
708 put_page_vector(pages, num_pages);
710 ceph_release_page_vector(pages, num_pages);