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()
41 static int dir_commit_chunk(struct page *page, loff_t pos, unsigned len) in dir_commit_chunk() argument
43 struct address_space *mapping = page->mapping; in dir_commit_chunk()
47 block_write_end(NULL, mapping, pos, len, len, page, NULL); in dir_commit_chunk()
53 err = write_one_page(page, 1); in dir_commit_chunk()
55 unlock_page(page); in dir_commit_chunk()
59 static struct page * dir_get_page(struct inode *dir, unsigned long n) in dir_get_page()
62 struct page *page = read_mapping_page(mapping, n, NULL); in dir_get_page() local
63 if (!IS_ERR(page)) in dir_get_page()
64 kmap(page); in dir_get_page()
65 return page; in dir_get_page()
87 struct page *page = dir_get_page(inode, n); in sysv_readdir() local
89 if (IS_ERR(page)) in sysv_readdir()
91 kaddr = (char *)page_address(page); in sysv_readdir()
103 dir_put_page(page); in sysv_readdir()
107 dir_put_page(page); in sysv_readdir()
131 struct sysv_dir_entry *sysv_find_entry(struct dentry *dentry, struct page **res_page) in sysv_find_entry()
138 struct page *page = NULL; in sysv_find_entry() local
150 page = dir_get_page(dir, n); in sysv_find_entry()
151 if (!IS_ERR(page)) { in sysv_find_entry()
152 kaddr = (char*)page_address(page); in sysv_find_entry()
162 dir_put_page(page); in sysv_find_entry()
173 *res_page = page; in sysv_find_entry()
182 struct page *page = NULL; in sysv_add_link() local
192 page = dir_get_page(dir, n); in sysv_add_link()
193 err = PTR_ERR(page); in sysv_add_link()
194 if (IS_ERR(page)) in sysv_add_link()
196 kaddr = (char*)page_address(page); in sysv_add_link()
207 dir_put_page(page); in sysv_add_link()
213 pos = page_offset(page) + in sysv_add_link()
214 (char*)de - (char*)page_address(page); in sysv_add_link()
215 lock_page(page); in sysv_add_link()
216 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_add_link()
222 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_add_link()
226 dir_put_page(page); in sysv_add_link()
230 unlock_page(page); in sysv_add_link()
234 int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page) in sysv_delete_entry() argument
236 struct inode *inode = page->mapping->host; in sysv_delete_entry()
237 char *kaddr = (char*)page_address(page); in sysv_delete_entry()
238 loff_t pos = page_offset(page) + (char *)de - kaddr; in sysv_delete_entry()
241 lock_page(page); in sysv_delete_entry()
242 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_delete_entry()
245 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_delete_entry()
246 dir_put_page(page); in sysv_delete_entry()
254 struct page *page = grab_cache_page(inode->i_mapping, 0); in sysv_make_empty() local
259 if (!page) in sysv_make_empty()
261 err = sysv_prepare_chunk(page, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
263 unlock_page(page); in sysv_make_empty()
266 kmap(page); in sysv_make_empty()
268 base = (char*)page_address(page); in sysv_make_empty()
278 kunmap(page); in sysv_make_empty()
279 err = dir_commit_chunk(page, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
281 page_cache_release(page); in sysv_make_empty()
291 struct page *page = NULL; in sysv_empty_dir() local
297 page = dir_get_page(inode, i); in sysv_empty_dir()
299 if (IS_ERR(page)) in sysv_empty_dir()
302 kaddr = (char *)page_address(page); in sysv_empty_dir()
321 dir_put_page(page); in sysv_empty_dir()
326 dir_put_page(page); in sysv_empty_dir()
331 void sysv_set_link(struct sysv_dir_entry *de, struct page *page, in sysv_set_link() argument
334 struct inode *dir = page->mapping->host; in sysv_set_link()
335 loff_t pos = page_offset(page) + in sysv_set_link()
336 (char *)de-(char*)page_address(page); in sysv_set_link()
339 lock_page(page); in sysv_set_link()
340 err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); in sysv_set_link()
343 err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); in sysv_set_link()
344 dir_put_page(page); in sysv_set_link()
349 struct sysv_dir_entry * sysv_dotdot (struct inode *dir, struct page **p) in sysv_dotdot()
351 struct page *page = dir_get_page(dir, 0); in sysv_dotdot() local
354 if (!IS_ERR(page)) { in sysv_dotdot()
355 de = (struct sysv_dir_entry*) page_address(page) + 1; in sysv_dotdot()
356 *p = page; in sysv_dotdot()
363 struct page *page; in sysv_inode_by_name() local
364 struct sysv_dir_entry *de = sysv_find_entry (dentry, &page); in sysv_inode_by_name()
369 dir_put_page(page); in sysv_inode_by_name()