diff --git a/fs/ntfs/compress.c b/fs/ntfs/compress.c index b733cd06c3da..2225630b19d7 100644 --- a/fs/ntfs/compress.c +++ b/fs/ntfs/compress.c @@ -21,6 +21,7 @@ #include #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 */