/* * get a page into the pagecache */ static struct page *afs_dir_get_page(struct inode *dir, unsigned long index, struct key *key) { struct page *page; struct file file = { .private_data = key, }; _enter("{%lu},%lu", dir->i_ino, index); page = read_mapping_page(dir->i_mapping, index, &file); if (!IS_ERR(page)) { kmap(page); if (!PageChecked(page)) afs_dir_check_page(dir, page); if (PageError(page)) goto fail; } return page; fail: afs_dir_put_page(page); _leave(" = -EIO"); return ERR_PTR(-EIO); }
/* * get a page into the pagecache */ static struct page *afs_dir_get_page(struct inode *dir, unsigned long index) { struct page *page; _enter("{%lu},%lu", dir->i_ino, index); page = read_mapping_page(dir->i_mapping, index, NULL); if (!IS_ERR(page)) { kmap(page); if (!PageChecked(page)) afs_dir_check_page(dir, page); if (PageError(page)) goto fail; } return page; fail: afs_dir_put_page(page); return ERR_PTR(-EIO); } /* end afs_dir_get_page() */
/* * get a page into the pagecache */ static struct page *afs_dir_get_page(struct inode *dir, unsigned long index, struct key *key) { struct page *page; _enter("{%lu},%lu", dir->i_ino, index); page = read_cache_page(dir->i_mapping, index, afs_page_filler, key); if (!IS_ERR(page)) { kmap(page); if (unlikely(!PageChecked(page))) { if (PageError(page) || !afs_dir_check_page(dir, page)) goto fail; } } return page; fail: afs_dir_put_page(page); _leave(" = -EIO"); return ERR_PTR(-EIO); }
/* * get a page into the pagecache */ static struct page *afs_dir_get_page(struct inode *dir, unsigned long index) { struct page *page; _enter("{%lu},%lu",dir->i_ino,index); page = read_cache_page(dir->i_mapping,index, (filler_t*)dir->i_mapping->a_ops->readpage,NULL); if (!IS_ERR(page)) { wait_on_page_locked(page); kmap(page); if (!PageUptodate(page)) goto fail; if (!PageChecked(page)) afs_dir_check_page(dir,page); if (PageError(page)) goto fail; } return page; fail: afs_dir_put_page(page); return ERR_PTR(-EIO); } /* end afs_dir_get_page() */