Commit | Line | Data |
---|---|---|
5f55dbc0 PL |
1 | /* |
2 | * Copyright (c) 2013 | |
3 | * Phillip Lougher <phillip@squashfs.org.uk> | |
4 | * | |
5 | * This work is licensed under the terms of the GNU GPL, version 2. See | |
6 | * the COPYING file in the top-level directory. | |
7 | */ | |
8 | ||
9 | #include <linux/fs.h> | |
10 | #include <linux/vfs.h> | |
11 | #include <linux/kernel.h> | |
12 | #include <linux/slab.h> | |
13 | #include <linux/string.h> | |
14 | #include <linux/pagemap.h> | |
15 | #include <linux/mutex.h> | |
16 | ||
17 | #include "squashfs_fs.h" | |
18 | #include "squashfs_fs_sb.h" | |
19 | #include "squashfs_fs_i.h" | |
20 | #include "squashfs.h" | |
21 | ||
22 | /* Read separately compressed datablock and memcopy into page cache */ | |
23 | int squashfs_readpage_block(struct page *page, u64 block, int bsize) | |
24 | { | |
25 | struct inode *i = page->mapping->host; | |
26 | struct squashfs_cache_entry *buffer = squashfs_get_datablock(i->i_sb, | |
27 | block, bsize); | |
28 | int res = buffer->error; | |
29 | ||
30 | if (res) | |
31 | ERROR("Unable to read page, block %llx, size %x\n", block, | |
32 | bsize); | |
33 | else | |
34 | squashfs_copy_cache(page, buffer, buffer->length, 0); | |
35 | ||
36 | squashfs_cache_put(buffer); | |
37 | return res; | |
38 | } |