[PATCH 2/8] ntfs: define LZNT1 codec ops under transparent codec interface
Hyunchul Lee <[email protected]>
| Newsgroups | dev.linux.lists.ntfs |
|---|---|
| Message-ID | <[email protected]> |
Define the ntfs_lznt1_codec_ops structure containing decompress_pages and compress_subblock callbacks in compress.c, and export it in ntfs_codec.h. This structure binds existing LZNT1 decompress and compress helper functions under the unified transparent compression interface. Signed-off-by: Hyunchul Lee <[email protected]> --- fs/ntfs/compress.c | 12 ++++++++++-- fs/ntfs/ntfs_codec.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/ntfs/compress.c b/fs/ntfs/compress.c index ea29fade9b9b..f980e0610a8f 100644 --- a/fs/ntfs/compress.c +++ b/fs/ntfs/compress.c @@ -21,6 +21,7 @@ #include <linux/slab.h> #include "attrib.h" +#include "ntfs_codec.h" #include "inode.h" #include "debug.h" #include "ntfs.h" @@ -774,7 +775,7 @@ int ntfs_read_compressed_block(struct folio *folio) unsigned int prev_cur_page = cur_page; ntfs_debug("Found compressed compression block."); - err = ntfs_decompress(pages, completed_pages, &cur_page, + err = ntfs_lznt1_codec_ops.decompress_pages(pages, completed_pages, &cur_page, &cur_ofs, cb_max_page, cb_max_ofs, xpage, &xpage_done, cb_pos, cb_size - (cb_pos - cb), i_size, initialized_size); @@ -1351,7 +1352,7 @@ static int ntfs_write_cb(struct ntfs_inode *ni, loff_t pos, struct page **pages, pbuf = &outbuf[compsz]; addr = kmap_local_page(pages[page_idx]); input = addr + offset_in_page(input_offset); - sz = ntfs_compress_block(ctx, input, bsz, pbuf); + sz = ntfs_lznt1_codec_ops.compress_subblock(ctx, input, bsz, pbuf); kunmap_local(addr); if (sz < 0) { err = sz; @@ -1609,3 +1610,10 @@ int ntfs_compress_write(struct ntfs_inode *ni, loff_t pos, size_t count, return written; } + +const struct ntfs_codec_ops ntfs_lznt1_codec_ops = { + .id = NTFS_CODEC_LZNT1, + .name = "lznt1", + .decompress_pages = ntfs_decompress, + .compress_subblock = ntfs_compress_block, +}; diff --git a/fs/ntfs/ntfs_codec.h b/fs/ntfs/ntfs_codec.h index 14a69d1e4d7f..408b18561a03 100644 --- a/fs/ntfs/ntfs_codec.h +++ b/fs/ntfs/ntfs_codec.h @@ -43,4 +43,6 @@ struct ntfs_codec_ops { const char *inbuf, int bufsize, char *outbuf); }; +extern const struct ntfs_codec_ops ntfs_lznt1_codec_ops; + #endif /* _NTFS_CODEC_H */ -- 2.43.0