Lines Matching full:page
29 static inline void dir_put_page(struct page *page) in dir_put_page() argument
31 kunmap(page); in dir_put_page()
32 put_page(page); in dir_put_page()
36 * Return the offset into page `page_nr' of the last valid
37 * byte in that page, plus one.
49 static int dir_commit_chunk(struct page *page, loff_t pos, unsigned len) in dir_commit_chunk() argument
51 struct address_space *mapping = page->mapping; in dir_commit_chunk()
54 block_write_end(NULL, mapping, pos, len, len, page, NULL); in dir_commit_chunk()
61 err = write_one_page(page); in dir_commit_chunk()
63 unlock_page(page); in dir_commit_chunk()
67 static struct page * dir_get_page(struct inode *dir, unsigned long n) in dir_get_page()
70 struct page *page = read_mapping_page(mapping, n, NULL); in dir_get_page() local
71 if (!IS_ERR(page)) in dir_get_page()
72 kmap(page); in dir_get_page()
73 return page; in dir_get_page()
101 struct page *page = dir_get_page(inode, n); in minix_readdir() local
103 if (IS_ERR(page)) in minix_readdir()
105 kaddr = (char *)page_address(page); in minix_readdir()
124 dir_put_page(page); in minix_readdir()
130 dir_put_page(page); in minix_readdir()
151 minix_dirent *minix_find_entry(struct dentry *dentry, struct page **res_page) in minix_find_entry()
160 struct page *page = NULL; in minix_find_entry() local
170 page = dir_get_page(dir, n); in minix_find_entry()
171 if (IS_ERR(page)) in minix_find_entry()
174 kaddr = (char*)page_address(page); in minix_find_entry()
191 dir_put_page(page); in minix_find_entry()
196 *res_page = page; in minix_find_entry()
207 struct page *page = NULL; in minix_add_link() local
220 * This code plays outside i_size, so it locks the page in minix_add_link()
226 page = dir_get_page(dir, n); in minix_add_link()
227 err = PTR_ERR(page); in minix_add_link()
228 if (IS_ERR(page)) in minix_add_link()
230 lock_page(page); in minix_add_link()
231 kaddr = (char*)page_address(page); in minix_add_link()
258 unlock_page(page); in minix_add_link()
259 dir_put_page(page); in minix_add_link()
265 pos = page_offset(page) + p - (char *)page_address(page); in minix_add_link()
266 err = minix_prepare_chunk(page, pos, sbi->s_dirsize); in minix_add_link()
277 err = dir_commit_chunk(page, pos, sbi->s_dirsize); in minix_add_link()
281 dir_put_page(page); in minix_add_link()
285 unlock_page(page); in minix_add_link()
289 int minix_delete_entry(struct minix_dir_entry *de, struct page *page) in minix_delete_entry() argument
291 struct inode *inode = page->mapping->host; in minix_delete_entry()
292 char *kaddr = page_address(page); in minix_delete_entry()
293 loff_t pos = page_offset(page) + (char*)de - kaddr; in minix_delete_entry()
298 lock_page(page); in minix_delete_entry()
299 err = minix_prepare_chunk(page, pos, len); in minix_delete_entry()
305 err = dir_commit_chunk(page, pos, len); in minix_delete_entry()
307 unlock_page(page); in minix_delete_entry()
309 dir_put_page(page); in minix_delete_entry()
317 struct page *page = grab_cache_page(inode->i_mapping, 0); in minix_make_empty() local
322 if (!page) in minix_make_empty()
324 err = minix_prepare_chunk(page, 0, 2 * sbi->s_dirsize); in minix_make_empty()
326 unlock_page(page); in minix_make_empty()
330 kaddr = kmap_atomic(page); in minix_make_empty()
352 err = dir_commit_chunk(page, 0, 2 * sbi->s_dirsize); in minix_make_empty()
354 put_page(page); in minix_make_empty()
363 struct page *page = NULL; in minix_empty_dir() local
372 page = dir_get_page(inode, i); in minix_empty_dir()
373 if (IS_ERR(page)) in minix_empty_dir()
376 kaddr = (char *)page_address(page); in minix_empty_dir()
402 dir_put_page(page); in minix_empty_dir()
407 dir_put_page(page); in minix_empty_dir()
411 /* Releases the page */
412 void minix_set_link(struct minix_dir_entry *de, struct page *page, in minix_set_link() argument
415 struct inode *dir = page->mapping->host; in minix_set_link()
417 loff_t pos = page_offset(page) + in minix_set_link()
418 (char *)de-(char*)page_address(page); in minix_set_link()
421 lock_page(page); in minix_set_link()
423 err = minix_prepare_chunk(page, pos, sbi->s_dirsize); in minix_set_link()
429 err = dir_commit_chunk(page, pos, sbi->s_dirsize); in minix_set_link()
431 unlock_page(page); in minix_set_link()
433 dir_put_page(page); in minix_set_link()
438 struct minix_dir_entry * minix_dotdot (struct inode *dir, struct page **p) in minix_dotdot()
440 struct page *page = dir_get_page(dir, 0); in minix_dotdot() local
444 if (!IS_ERR(page)) { in minix_dotdot()
445 de = minix_next_entry(page_address(page), sbi); in minix_dotdot()
446 *p = page; in minix_dotdot()
453 struct page *page; in minix_inode_by_name() local
454 struct minix_dir_entry *de = minix_find_entry(dentry, &page); in minix_inode_by_name()
458 struct address_space *mapping = page->mapping; in minix_inode_by_name()
466 dir_put_page(page); in minix_inode_by_name()