Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5d74902 authored by David Sterba's avatar David Sterba
Browse files

btrfs: derive maximum output size in the compression implementation



The value of max_out can be calculated from the parameters passed to the
compressors, which is number of pages and the page size, and we don't
have to needlessly pass it around.

Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 069eac78
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -932,8 +932,7 @@ int btrfs_compress_pages(int type, struct address_space *mapping,
			 u64 start, struct page **pages,
			 unsigned long *out_pages,
			 unsigned long *total_in,
			 unsigned long *total_out,
			 unsigned long max_out)
			 unsigned long *total_out)
{
	struct list_head *workspace;
	int ret;
@@ -943,8 +942,7 @@ int btrfs_compress_pages(int type, struct address_space *mapping,
	ret = btrfs_compress_op[type-1]->compress_pages(workspace, mapping,
						      start, pages,
						      out_pages,
						      total_in, total_out,
						      max_out);
						      total_in, total_out);
	free_workspace(type, workspace);
	return ret;
}
+2 −4
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@ int btrfs_compress_pages(int type, struct address_space *mapping,
			 u64 start, struct page **pages,
			 unsigned long *out_pages,
			 unsigned long *total_in,
			 unsigned long *total_out,
			 unsigned long max_out);
			 unsigned long *total_out);
int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page,
		     unsigned long start_byte, size_t srclen, size_t destlen);
int btrfs_decompress_buf2page(const char *buf, unsigned long buf_start,
@@ -76,8 +75,7 @@ struct btrfs_compress_op {
			      struct page **pages,
			      unsigned long *out_pages,
			      unsigned long *total_in,
			      unsigned long *total_out,
			      unsigned long max_out);
			      unsigned long *total_out);

	int (*decompress_bio)(struct list_head *workspace,
				 struct page **pages_in,
+1 −2
Original line number Diff line number Diff line
@@ -510,8 +510,7 @@ static noinline void compress_file_range(struct inode *inode,
					   pages,
					   &nr_pages,
					   &total_in,
					   &total_compressed,
					   BTRFS_MAX_COMPRESSED);
					   &total_compressed);

		if (!ret) {
			unsigned long offset = total_compressed &
+2 −2
Original line number Diff line number Diff line
@@ -90,8 +90,7 @@ static int lzo_compress_pages(struct list_head *ws,
			      struct page **pages,
			      unsigned long *out_pages,
			      unsigned long *total_in,
			      unsigned long *total_out,
			      unsigned long max_out)
			      unsigned long *total_out)
{
	struct workspace *workspace = list_entry(ws, struct workspace, list);
	int ret = 0;
@@ -103,6 +102,7 @@ static int lzo_compress_pages(struct list_head *ws,
	unsigned long bytes_left;
	unsigned long len = *total_out;
	unsigned long nr_dest_pages = *out_pages;
	const unsigned long max_out = nr_dest_pages * PAGE_SIZE;
	size_t in_len;
	size_t out_len;
	char *buf;
+2 −2
Original line number Diff line number Diff line
@@ -77,8 +77,7 @@ static int zlib_compress_pages(struct list_head *ws,
			       struct page **pages,
			       unsigned long *out_pages,
			       unsigned long *total_in,
			       unsigned long *total_out,
			       unsigned long max_out)
			       unsigned long *total_out)
{
	struct workspace *workspace = list_entry(ws, struct workspace, list);
	int ret;
@@ -90,6 +89,7 @@ static int zlib_compress_pages(struct list_head *ws,
	unsigned long bytes_left;
	unsigned long len = *total_out;
	unsigned long nr_dest_pages = *out_pages;
	const unsigned long max_out = nr_dest_pages * PAGE_SIZE;

	*out_pages = 0;
	*total_out = 0;