Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/fs/btrfs/compression.h
15109 views
1
/*
2
* Copyright (C) 2008 Oracle. All rights reserved.
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public
6
* License v2 as published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
* General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public
14
* License along with this program; if not, write to the
15
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16
* Boston, MA 021110-1307, USA.
17
*/
18
19
#ifndef __BTRFS_COMPRESSION_
20
#define __BTRFS_COMPRESSION_
21
22
int btrfs_init_compress(void);
23
void btrfs_exit_compress(void);
24
25
int btrfs_compress_pages(int type, struct address_space *mapping,
26
u64 start, unsigned long len,
27
struct page **pages,
28
unsigned long nr_dest_pages,
29
unsigned long *out_pages,
30
unsigned long *total_in,
31
unsigned long *total_out,
32
unsigned long max_out);
33
int btrfs_decompress_biovec(int type, struct page **pages_in, u64 disk_start,
34
struct bio_vec *bvec, int vcnt, size_t srclen);
35
int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page,
36
unsigned long start_byte, size_t srclen, size_t destlen);
37
int btrfs_decompress_buf2page(char *buf, unsigned long buf_start,
38
unsigned long total_out, u64 disk_start,
39
struct bio_vec *bvec, int vcnt,
40
unsigned long *pg_index,
41
unsigned long *pg_offset);
42
43
int btrfs_submit_compressed_write(struct inode *inode, u64 start,
44
unsigned long len, u64 disk_start,
45
unsigned long compressed_len,
46
struct page **compressed_pages,
47
unsigned long nr_pages);
48
int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
49
int mirror_num, unsigned long bio_flags);
50
51
struct btrfs_compress_op {
52
struct list_head *(*alloc_workspace)(void);
53
54
void (*free_workspace)(struct list_head *workspace);
55
56
int (*compress_pages)(struct list_head *workspace,
57
struct address_space *mapping,
58
u64 start, unsigned long len,
59
struct page **pages,
60
unsigned long nr_dest_pages,
61
unsigned long *out_pages,
62
unsigned long *total_in,
63
unsigned long *total_out,
64
unsigned long max_out);
65
66
int (*decompress_biovec)(struct list_head *workspace,
67
struct page **pages_in,
68
u64 disk_start,
69
struct bio_vec *bvec,
70
int vcnt,
71
size_t srclen);
72
73
int (*decompress)(struct list_head *workspace,
74
unsigned char *data_in,
75
struct page *dest_page,
76
unsigned long start_byte,
77
size_t srclen, size_t destlen);
78
};
79
80
extern struct btrfs_compress_op btrfs_zlib_compress;
81
extern struct btrfs_compress_op btrfs_lzo_compress;
82
83
#endif
84
85