Lines Matching +full:page +full:- +full:offset
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Squashfs - a compressed read only filesystem for Linux
35 struct page *page = &folio->page; in squashfs_symlink_read_folio() local
36 struct inode *inode = page->mapping->host; in squashfs_symlink_read_folio()
37 struct super_block *sb = inode->i_sb; in squashfs_symlink_read_folio()
38 struct squashfs_sb_info *msblk = sb->s_fs_info; in squashfs_symlink_read_folio()
39 int index = page->index << PAGE_SHIFT; in squashfs_symlink_read_folio()
40 u64 block = squashfs_i(inode)->start; in squashfs_symlink_read_folio()
41 int offset = squashfs_i(inode)->offset; in squashfs_symlink_read_folio() local
42 int length = min_t(int, i_size_read(inode) - index, PAGE_SIZE); in squashfs_symlink_read_folio()
47 TRACE("Entered squashfs_symlink_readpage, page index %ld, start block " in squashfs_symlink_read_folio()
48 "%llx, offset %x\n", page->index, block, offset); in squashfs_symlink_read_folio()
54 bytes = squashfs_read_metadata(sb, NULL, &block, &offset, in squashfs_symlink_read_folio()
58 squashfs_i(inode)->start, in squashfs_symlink_read_folio()
59 squashfs_i(inode)->offset); in squashfs_symlink_read_folio()
67 * kmap_atomic to map the page. Instead call the underlying in squashfs_symlink_read_folio()
71 for (bytes = 0; bytes < length; offset = 0, bytes += copied) { in squashfs_symlink_read_folio()
72 entry = squashfs_cache_get(sb, msblk->block_cache, block, 0); in squashfs_symlink_read_folio()
73 if (entry->error) { in squashfs_symlink_read_folio()
75 squashfs_i(inode)->start, in squashfs_symlink_read_folio()
76 squashfs_i(inode)->offset); in squashfs_symlink_read_folio()
81 pageaddr = kmap_atomic(page); in squashfs_symlink_read_folio()
82 copied = squashfs_copy_data(pageaddr + bytes, entry, offset, in squashfs_symlink_read_folio()
83 length - bytes); in squashfs_symlink_read_folio()
84 if (copied == length - bytes) in squashfs_symlink_read_folio()
85 memset(pageaddr + length, 0, PAGE_SIZE - length); in squashfs_symlink_read_folio()
87 block = entry->next_index; in squashfs_symlink_read_folio()
92 flush_dcache_page(page); in squashfs_symlink_read_folio()
93 SetPageUptodate(page); in squashfs_symlink_read_folio()
94 unlock_page(page); in squashfs_symlink_read_folio()
98 SetPageError(page); in squashfs_symlink_read_folio()
99 unlock_page(page); in squashfs_symlink_read_folio()