xref: /spdk/module/bdev/compress/vbdev_compress.h (revision ddd4603ceb2154dd59f14c6f2851f5f8cd1711c4)
1488570ebSJim Harris /*   SPDX-License-Identifier: BSD-3-Clause
2a6dbe372Spaul luse  *   Copyright (C) 2018 Intel Corporation.
307fe6a43SSeth Howell  *   All rights reserved.
46479ddb3SAlexey Marchuk  *   Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
507fe6a43SSeth Howell  */
607fe6a43SSeth Howell 
707fe6a43SSeth Howell #ifndef SPDK_VBDEV_COMPRESS_H
807fe6a43SSeth Howell #define SPDK_VBDEV_COMPRESS_H
907fe6a43SSeth Howell 
1007fe6a43SSeth Howell #include "spdk/stdinc.h"
1107fe6a43SSeth Howell 
1207fe6a43SSeth Howell #include "spdk/bdev.h"
1307fe6a43SSeth Howell 
1462b3b171Spaul luse #define LB_SIZE_4K	0x1000UL
1562b3b171Spaul luse #define LB_SIZE_512B	0x200UL
1662b3b171Spaul luse 
17f3cda926SYankun Li typedef void (*bdev_compress_create_cb)(void *ctx, int status);
18f3cda926SYankun Li 
1907fe6a43SSeth Howell /**
2007fe6a43SSeth Howell  * Get the first compression bdev.
2107fe6a43SSeth Howell  *
2207fe6a43SSeth Howell  * \return the first compression bdev.
2307fe6a43SSeth Howell  */
2407fe6a43SSeth Howell struct vbdev_compress *compress_bdev_first(void);
2507fe6a43SSeth Howell 
2607fe6a43SSeth Howell /**
2707fe6a43SSeth Howell  * Get the next compression bdev.
2807fe6a43SSeth Howell  *
2907fe6a43SSeth Howell  * \param prev previous compression bdev.
3007fe6a43SSeth Howell  * \return the next compression bdev.
3107fe6a43SSeth Howell  */
3207fe6a43SSeth Howell struct vbdev_compress *compress_bdev_next(struct vbdev_compress *prev);
3307fe6a43SSeth Howell 
3407fe6a43SSeth Howell /**
3507fe6a43SSeth Howell  * Test to see if a compression bdev orphan exists.
3607fe6a43SSeth Howell  *
3707fe6a43SSeth Howell  * \param name The name of the compression bdev.
3807fe6a43SSeth Howell  * \return true if found, false if not.
3907fe6a43SSeth Howell  */
4007fe6a43SSeth Howell bool compress_has_orphan(const char *name);
4107fe6a43SSeth Howell 
4207fe6a43SSeth Howell /**
4307fe6a43SSeth Howell  * Get the name of a compression bdev.
4407fe6a43SSeth Howell  *
4507fe6a43SSeth Howell  * \param comp_bdev The compression bdev.
4607fe6a43SSeth Howell  * \return the name of the compression bdev.
4707fe6a43SSeth Howell  */
4807fe6a43SSeth Howell const char *compress_get_name(const struct vbdev_compress *comp_bdev);
4907fe6a43SSeth Howell 
5007fe6a43SSeth Howell typedef void (*spdk_delete_compress_complete)(void *cb_arg, int bdeverrno);
5107fe6a43SSeth Howell 
5207fe6a43SSeth Howell /**
5307fe6a43SSeth Howell  * Create new compression bdev.
5407fe6a43SSeth Howell  *
5507fe6a43SSeth Howell  * \param bdev_name Bdev on which compression bdev will be created.
5607fe6a43SSeth Howell  * \param pm_path Path to persistent memory.
5762b3b171Spaul luse  * \param lb_size Logical block size for the compressed volume in bytes. Must be 4K or 512.
58*ddd4603cSYankun Li  * \param comp_algo compression algorithm for the compressed volume.
59*ddd4603cSYankun Li  * \param comp_level compression algorithm level for the compressed volume.
60f3cda926SYankun Li  * \param cb_fn Function to call after creation.
61f3cda926SYankun Li  * \param cb_arg Argument to pass to cb_fn.
6207fe6a43SSeth Howell  * \return 0 on success, other on failure.
6307fe6a43SSeth Howell  */
64f3cda926SYankun Li int create_compress_bdev(const char *bdev_name, const char *pm_path, uint32_t lb_size,
65*ddd4603cSYankun Li 			 uint8_t comp_algo, uint32_t comp_level,
66f3cda926SYankun Li 			 bdev_compress_create_cb cb_fn, void *cb_arg);
6707fe6a43SSeth Howell 
6807fe6a43SSeth Howell /**
6907fe6a43SSeth Howell  * Delete compress bdev.
7007fe6a43SSeth Howell  *
7107fe6a43SSeth Howell  * \param bdev_name Bdev on which compression bdev will be deleted.
7207fe6a43SSeth Howell  * \param cb_fn Function to call after deletion.
7307fe6a43SSeth Howell  * \param cb_arg Argument to pass to cb_fn.
7407fe6a43SSeth Howell  */
7507fe6a43SSeth Howell void bdev_compress_delete(const char *bdev_name, spdk_delete_compress_complete cb_fn,
7607fe6a43SSeth Howell 			  void *cb_arg);
7707fe6a43SSeth Howell 
7807fe6a43SSeth Howell #endif /* SPDK_VBDEV_COMPRESS_H */
79