// SPDX-License-Identifier: GPL-2.0-only 
 | 
/* 
 | 
 * Copyright (c) 2013 
 | 
 * Phillip Lougher <phillip@squashfs.org.uk> 
 | 
 */ 
 | 
  
 | 
#include <linux/fs.h> 
 | 
#include <linux/vfs.h> 
 | 
#include <linux/kernel.h> 
 | 
#include <linux/slab.h> 
 | 
#include <linux/string.h> 
 | 
#include <linux/pagemap.h> 
 | 
#include <linux/mutex.h> 
 | 
  
 | 
#include "squashfs_fs.h" 
 | 
#include "squashfs_fs_sb.h" 
 | 
#include "squashfs_fs_i.h" 
 | 
#include "squashfs.h" 
 | 
  
 | 
/* Read separately compressed datablock and memcopy into page cache */ 
 | 
int squashfs_readpage_block(struct page *page, u64 block, int bsize, int expected) 
 | 
{ 
 | 
    struct inode *i = page->mapping->host; 
 | 
    struct squashfs_cache_entry *buffer = squashfs_get_datablock(i->i_sb, 
 | 
        block, bsize); 
 | 
    int res = buffer->error; 
 | 
  
 | 
    if (res) 
 | 
        ERROR("Unable to read page, block %llx, size %x\n", block, 
 | 
            bsize); 
 | 
    else 
 | 
        squashfs_copy_cache(page, buffer, expected, 0); 
 | 
  
 | 
    squashfs_cache_put(buffer); 
 | 
    return res; 
 | 
} 
 |