[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20170718182111.GA2866@twin.jikos.cz>
Date: Tue, 18 Jul 2017 20:21:11 +0200
From: David Sterba <dsterba@...e.cz>
To: Nick Terrell <terrelln@...com>
Cc: kernel-team@...com, Chris Mason <clm@...com>,
Yann Collet <cyan@...com>, Adam Borowski <kilobyte@...band.pl>,
David Sterba <dsterba@...e.cz>,
squashfs-devel@...ts.sourceforge.net, linux-btrfs@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 3/4] btrfs: Add zstd support
On Thu, Jun 29, 2017 at 12:41:07PM -0700, Nick Terrell wrote:
> +static void zstd_free_workspace(struct list_head *ws)
> +{
> + struct workspace *workspace = list_entry(ws, struct workspace, list);
> +
> + vfree(workspace->mem);
> + kfree(workspace->buf);
> + kfree(workspace);
> +}
> +
> +static struct list_head *zstd_alloc_workspace(void)
> +{
> + ZSTD_parameters params =
> + zstd_get_btrfs_parameters(ZSTD_BTRFS_MAX_INPUT);
> + struct workspace *workspace;
> +
> + workspace = kzalloc(sizeof(*workspace), GFP_NOFS);
> + if (!workspace)
> + return ERR_PTR(-ENOMEM);
> +
> + workspace->size = max_t(size_t,
> + ZSTD_CStreamWorkspaceBound(params.cParams),
> + ZSTD_DStreamWorkspaceBound(ZSTD_BTRFS_MAX_INPUT));
> + workspace->mem = vmalloc(workspace->size);
> + workspace->buf = kmalloc(PAGE_SIZE, GFP_NOFS);
> + if (!workspace->mem || !workspace->buf)
> + goto fail;
> +
> + INIT_LIST_HEAD(&workspace->list);
> +
> + return &workspace->list;
> +fail:
> + zstd_free_workspace(&workspace->list);
> + return ERR_PTR(-ENOMEM);
> +}
In the next iteration, please update the workspace allocations so that
they use kvmalloc/kvfree and GFP_KERNEL (eg. 6acafd1eff426).
Powered by blists - more mailing lists