file_cache.c (887B)
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (c) 2013 4 * Phillip Lougher <phillip@squashfs.org.uk> 5 */ 6 7#include <linux/fs.h> 8#include <linux/vfs.h> 9#include <linux/kernel.h> 10#include <linux/slab.h> 11#include <linux/string.h> 12#include <linux/pagemap.h> 13#include <linux/mutex.h> 14 15#include "squashfs_fs.h" 16#include "squashfs_fs_sb.h" 17#include "squashfs_fs_i.h" 18#include "squashfs.h" 19 20/* Read separately compressed datablock and memcopy into page cache */ 21int squashfs_readpage_block(struct page *page, u64 block, int bsize, int expected) 22{ 23 struct inode *i = page->mapping->host; 24 struct squashfs_cache_entry *buffer = squashfs_get_datablock(i->i_sb, 25 block, bsize); 26 int res = buffer->error; 27 28 if (res) 29 ERROR("Unable to read page, block %llx, size %x\n", block, 30 bsize); 31 else 32 squashfs_copy_cache(page, buffer, expected, 0); 33 34 squashfs_cache_put(buffer); 35 return res; 36}