summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2019-10-04 02:40:58 +0300
committerDavid Sterba <dsterba@suse.com>2019-11-18 14:46:57 +0300
commit2dba714390f1ff7a8a37cc8c3b374d71d3e84af7 (patch)
treed8c07872abeac80b5bf0b68c7380f976a25b9747 /fs
parentd551703347263b7f79168e51c2f999cb883b8d65 (diff)
downloadlinux-2dba714390f1ff7a8a37cc8c3b374d71d3e84af7.tar.xz
btrfs: compression: let workspace manager cleanup take only the type
With the access to the workspace structures, we can look it up together with the compression ops inside the workspace manager cleanup helper. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/compression.c6
-rw-r--r--fs/btrfs/compression.h2
-rw-r--r--fs/btrfs/lzo.c2
-rw-r--r--fs/btrfs/zlib.c2
4 files changed, 7 insertions, 5 deletions
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index 61b9cf095ee5..6c4dc62b9ab0 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -863,7 +863,7 @@ static struct workspace_manager heuristic_wsm;
static void heuristic_cleanup_workspace_manager(void)
{
- btrfs_cleanup_workspace_manager(&heuristic_wsm);
+ btrfs_cleanup_workspace_manager(BTRFS_COMPRESS_NONE);
}
static struct list_head *heuristic_get_workspace(unsigned int level)
@@ -960,10 +960,12 @@ static void btrfs_init_workspace_manager(int type)
}
}
-void btrfs_cleanup_workspace_manager(struct workspace_manager *wsman)
+void btrfs_cleanup_workspace_manager(int type)
{
+ struct workspace_manager *wsman;
struct list_head *ws;
+ wsman = btrfs_compress_op[type]->workspace_manager;
while (!list_empty(&wsman->idle_ws)) {
ws = wsman->idle_ws.next;
list_del(ws);
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index 12a46139c389..0deaa8e03836 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -123,7 +123,7 @@ struct workspace_manager {
struct list_head *btrfs_get_workspace(struct workspace_manager *wsm,
unsigned int level);
void btrfs_put_workspace(struct workspace_manager *wsm, struct list_head *ws);
-void btrfs_cleanup_workspace_manager(struct workspace_manager *wsm);
+void btrfs_cleanup_workspace_manager(int type);
struct btrfs_compress_op {
void (*cleanup_workspace_manager)(void);
diff --git a/fs/btrfs/lzo.c b/fs/btrfs/lzo.c
index a55079477edf..6aa602040506 100644
--- a/fs/btrfs/lzo.c
+++ b/fs/btrfs/lzo.c
@@ -65,7 +65,7 @@ static struct workspace_manager wsm;
static void lzo_cleanup_workspace_manager(void)
{
- btrfs_cleanup_workspace_manager(&wsm);
+ btrfs_cleanup_workspace_manager(BTRFS_COMPRESS_LZO);
}
static struct list_head *lzo_get_workspace(unsigned int level)
diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c
index 39f1d0f1b286..7319e9f3d484 100644
--- a/fs/btrfs/zlib.c
+++ b/fs/btrfs/zlib.c
@@ -31,7 +31,7 @@ static struct workspace_manager wsm;
static void zlib_cleanup_workspace_manager(void)
{
- btrfs_cleanup_workspace_manager(&wsm);
+ btrfs_cleanup_workspace_manager(BTRFS_COMPRESS_ZLIB);
}
static struct list_head *zlib_get_workspace(unsigned int level)