Lines Matching refs:page

30 static inline void dir_put_page(struct page *page)  in dir_put_page()  argument
32 kunmap(page); in dir_put_page()
33 page_cache_release(page); in dir_put_page()
36 static int dir_commit_chunk(struct page *page, loff_t pos, unsigned len) in dir_commit_chunk() argument
38 struct address_space *mapping = page->mapping; in dir_commit_chunk()
42 block_write_end(NULL, mapping, pos, len, len, page, NULL); in dir_commit_chunk()
48 err = write_one_page(page, 1); in dir_commit_chunk()
50 unlock_page(page); in dir_commit_chunk()
54 static struct page * dir_get_page(struct inode *dir, unsigned long n) in dir_get_page()
57 struct page *page = read_mapping_page(mapping, n, NULL); in dir_get_page() local
58 if (!IS_ERR(page)) in dir_get_page()
59 kmap(page); in dir_get_page()
60 return page; in dir_get_page()
82 struct page *page = dir_get_page(inode, n); in sysv_readdir() local
84 if (IS_ERR(page)) in sysv_readdir()
86 kaddr = (char *)page_address(page); in sysv_readdir()
98 dir_put_page(page); in sysv_readdir()
102 dir_put_page(page); in sysv_readdir()
126 struct sysv_dir_entry *sysv_find_entry(struct dentry *dentry, struct page **res_page) in sysv_find_entry()
133 struct page *page = NULL; in sysv_find_entry() local
145 page = dir_get_page(dir, n); in sysv_find_entry()
146 if (!IS_ERR(page)) { in sysv_find_entry()
147 kaddr = (char*)page_address(page); in sysv_find_entry()
157 dir_put_page(page); in sysv_find_entry()
168 *res_page = page; in sysv_find_entry()
177 struct page *page = NULL; in sysv_add_link() local
187 page = dir_get_page(dir, n); in sysv_add_link()
188 err = PTR_ERR(page); in sysv_add_link()
189 if (IS_ERR(page)) in sysv_add_link()
191 kaddr = (char*)page_address(page); in sysv_add_link()
202 dir_put_page(page); in sysv_add_link()
208 pos = page_offset(page) + in sysv_add_link()
209 (char*)de - (char*)page_address(page); in sysv_add_link()
210 lock_page(page); in sysv_add_link()
211 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_add_link()
217 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_add_link()
221 dir_put_page(page); in sysv_add_link()
225 unlock_page(page); in sysv_add_link()
229 int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page) in sysv_delete_entry() argument
231 struct inode *inode = page->mapping->host; in sysv_delete_entry()
232 char *kaddr = (char*)page_address(page); in sysv_delete_entry()
233 loff_t pos = page_offset(page) + (char *)de - kaddr; in sysv_delete_entry()
236 lock_page(page); in sysv_delete_entry()
237 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_delete_entry()
240 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_delete_entry()
241 dir_put_page(page); in sysv_delete_entry()
249 struct page *page = grab_cache_page(inode->i_mapping, 0); in sysv_make_empty() local
254 if (!page) in sysv_make_empty()
256 err = sysv_prepare_chunk(page, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
258 unlock_page(page); in sysv_make_empty()
261 kmap(page); in sysv_make_empty()
263 base = (char*)page_address(page); in sysv_make_empty()
273 kunmap(page); in sysv_make_empty()
274 err = dir_commit_chunk(page, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
276 page_cache_release(page); in sysv_make_empty()
286 struct page *page = NULL; in sysv_empty_dir() local
292 page = dir_get_page(inode, i); in sysv_empty_dir()
294 if (IS_ERR(page)) in sysv_empty_dir()
297 kaddr = (char *)page_address(page); in sysv_empty_dir()
316 dir_put_page(page); in sysv_empty_dir()
321 dir_put_page(page); in sysv_empty_dir()
326 void sysv_set_link(struct sysv_dir_entry *de, struct page *page, in sysv_set_link() argument
329 struct inode *dir = page->mapping->host; in sysv_set_link()
330 loff_t pos = page_offset(page) + in sysv_set_link()
331 (char *)de-(char*)page_address(page); in sysv_set_link()
334 lock_page(page); in sysv_set_link()
335 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_set_link()
338 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_set_link()
339 dir_put_page(page); in sysv_set_link()
344 struct sysv_dir_entry * sysv_dotdot (struct inode *dir, struct page **p) in sysv_dotdot()
346 struct page *page = dir_get_page(dir, 0); in sysv_dotdot() local
349 if (!IS_ERR(page)) { in sysv_dotdot()
350 de = (struct sysv_dir_entry*) page_address(page) + 1; in sysv_dotdot()
351 *p = page; in sysv_dotdot()
358 struct page *page; in sysv_inode_by_name() local
359 struct sysv_dir_entry *de = sysv_find_entry (dentry, &page); in sysv_inode_by_name()
364 dir_put_page(page); in sysv_inode_by_name()