> I honestly don't know... > > What is changing the page under write()? If something is modifying > page's content in parallel with zram's write() then you can't really > use zram, if the content is changing concurrently with zram's compression > then I really don't see how it would be able to decompress it later > and what would it decompress to (some mix of stale and new data?). I am not familiar with file systems and lzro, so I dumped the page owner of the modified page. The function stack of most page allocated is as follows: [ 46.560092] page_owner tracks the page as allocated [ 46.560101] page last allocated via order 0, migratetype Movable, gfp_mask 0x148c48(GFP_NOFS|__GFP_NOFAIL|__GFP_COMP|__GFP_HARDWALL|__GFP_MOVABLE), pid 1769, tgid 1372 (a.out), ts 45588110160, free_ts 45123127760 [ 46.560126] prep_new_page+0xa8/0x10c [ 46.560143] get_page_from_freelist+0xa44/0x16d0 [ 46.560160] __alloc_pages_noprof+0x150/0x290 [ 46.560177] alloc_pages_mpol_noprof+0x88/0x23c [ 46.560195] alloc_pages_noprof+0x4c/0x7c [ 46.560234] folio_alloc_noprof+0x14/0x64 [ 46.560254] filemap_alloc_folio_noprof+0x100/0x14c [ 46.560272] __filemap_get_folio+0x21c/0x38c [ 46.560290] bdev_getblk+0xd0/0x2b4 [ 46.560304] __ext4_get_inode_loc+0x11c/0x53c [ 46.560320] ext4_get_inode_loc+0x44/0xb0 [ 46.560337] ext4_reserve_inode_write+0x40/0xf0 [ 46.560354] __ext4_mark_inode_dirty+0x4c/0x1f0 [ 46.560370] ext4_ext_tree_init+0x40/0x4c [ 46.560388] __ext4_new_inode+0x790/0x13b8 [ 46.560406] ext4_create+0xdc/0x1d0 and other list this: [ 47.683962] page_owner tracks the page as allocated [ 47.684012] page last allocated via order 0, migratetype Unmovable, gfp_mask 0x148c40(GFP_NOFS|__GFP_NOFAIL|__GFP_COMP|__GFP_HARDWALL), pid 1309, tgid 970 (a.out), ts 44091572544, free_ts 0 [ 47.684056] prep_new_page+0xa8/0x10c [ 47.684090] get_page_from_freelist+0xa44/0x16d0 [ 47.684109] __alloc_pages_noprof+0x150/0x290 [ 47.684127] alloc_pages_mpol_noprof+0x88/0x23c [ 47.684148] alloc_pages_noprof+0x4c/0x7c [ 47.684166] folio_alloc_noprof+0x14/0x64 [ 47.684184] filemap_alloc_folio_noprof+0x100/0x14c [ 47.684205] __filemap_get_folio+0x21c/0x38c [ 47.684223] bdev_getblk+0xd0/0x2b4 [ 47.684240] ext4_getblk+0xac/0x300 [ 47.684258] ext4_bread+0x14/0xe4 [ 47.684274] ext4_append+0x90/0x1cc [ 47.684293] do_split+0x88/0x9c4 [ 47.684307] make_indexed_dir+0x580/0x688 [ 47.684322] ext4_add_entry+0x37c/0x420 [ 47.684337] ext4_add_nondir+0x38/0x11c It look like only the file system metadata has been modified.I'm not sure.