void random_map_readfn(struct map *map) { if (map->size == page_size) read_one_page(map); else { if (RAND_BOOL()) read_one_page(map); else read_faultfns[rnd() % ARRAY_SIZE(read_faultfns)].func(map); } }
static int orangefs_readpages(struct file *file, struct address_space *mapping, struct list_head *pages, unsigned nr_pages) { int page_idx; int ret; gossip_debug(GOSSIP_INODE_DEBUG, "orangefs_readpages called\n"); for (page_idx = 0; page_idx < nr_pages; page_idx++) { struct page *page; page = list_entry(pages->prev, struct page, lru); list_del(&page->lru); if (!add_to_page_cache(page, mapping, page->index, readahead_gfp_mask(mapping))) { ret = read_one_page(page); gossip_debug(GOSSIP_INODE_DEBUG, "failure adding page to cache, read_one_page returned: %d\n", ret); } else { put_page(page); } } BUG_ON(!list_empty(pages)); return 0; }
static int pvfs2_readpages( struct file *file, struct address_space *mapping, struct list_head *pages, unsigned nr_pages) { int page_idx; int ret; gossip_debug(GOSSIP_INODE_DEBUG, "pvfs2_readpages called\n"); for (page_idx = 0; page_idx < nr_pages; page_idx++) { struct page *page; page = list_entry(pages->prev, struct page, lru); list_del(&page->lru); if (!add_to_page_cache(page, mapping, page->index, GFP_KERNEL)) { ret = read_one_page(page); } else { page_cache_release(page); } } BUG_ON(!list_empty(pages)); return 0; }
static int orangefs_readpage(struct file *file, struct page *page) { return read_one_page(page); }
static int pvfs2_readpage( struct file *file, struct page *page) { return read_one_page(page); }