This sounds like a very reasonable solution - thank you!

On Mon, Aug 31, 2020, at 8:46 PM, Chao Yu wrote:
> I think one way to solve this issue is adding an extra mount option,
> e.g. compress_mempool, once user specify this option, we can allocate
> and reserve memory for one single workspace of compression algorithm,
> during compress/decompress, once we can not grab any more memory from
> system, we can let the process wait on that private mempool, it may
> increase latency of write compressed data, however it decrease failure
> ratio on low-end device.
> 
> On 2020/9/1 11:07, 5kft wrote:
> > Thanks for the patch - I applied it against 5.9-rc2, and it seems to 
> > help...:  The test I am using for this is to copy the entire rootfs tree to 
> > a zstd-compressed f2fs partition.  Previously, even a vm.min_free_kbytes of 
> > 32768 wasn't enough to avoid the allocation traps for the copy; with this 
> > patch I'm able to complete the entire copy without an error at 
> > vm.min_free_kbytes=32768.
> > 
> > However, if I try vm.min_free_kbytes=16384 (for example), then it still 
> > runs out of memory and logs many traps.  It still seems rather excessive to 
> > require so much available memory...?
> > 
> > Example traps at the system default vm.min_free_kbytes of ~2800 (following 
> > board boot):
> > 
> > [  141.863780] kworker/u8:4: page allocation failure: order:6, 
> > mode:0x40c40(GFP_NOFS|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0
> > [  141.863810] CPU: 3 PID: 1444 Comm: kworker/u8:4 Tainted: G         C     
> >    5.9.0-rc2-sunxi #trunk
> > [  141.863812] Hardware name: Allwinner sun8i Family
> > [  141.863833] Workqueue: writeback wb_workfn (flush-179:0)
> > [  141.863859] [<c010d415>] (unwind_backtrace) from [<c01097a5>] 
> > (show_stack+0x11/0x14)
> > [  141.863872] [<c01097a5>] (show_stack) from [<c0573da1>] 
> > (dump_stack+0x75/0x84)
> > [  141.863888] [<c0573da1>] (dump_stack) from [<c0246163>] 
> > (warn_alloc+0xa3/0x104)
> > [  141.863899] [<c0246163>] (warn_alloc) from [<c0246d71>] 
> > (__alloc_pages_nodemask+0xbad/0xc58)
> > [  141.863911] [<c0246d71>] (__alloc_pages_nodemask) from [<c022a09f>] 
> > (kmalloc_order+0x23/0x50)
> > [  141.863920] [<c022a09f>] (kmalloc_order) from [<c022a0e5>] 
> > (kmalloc_order_trace+0x19/0x90)
> > [  141.863933] [<c022a0e5>] (kmalloc_order_trace) from [<c0481519>] 
> > (zstd_init_compress_ctx+0x51/0xfc)
> > [  141.863946] [<c0481519>] (zstd_init_compress_ctx) from [<c048304b>] 
> > (f2fs_write_multi_pages+0x27b/0x6a0)
> > [  141.863961] [<c048304b>] (f2fs_write_multi_pages) from [<c04699e3>] 
> > (f2fs_write_cache_pages+0x3bf/0x538)
> > [  141.863971] [<c04699e3>] (f2fs_write_cache_pages) from [<c0469d8f>] 
> > (f2fs_write_data_pages+0x233/0x264)
> > [  141.863985] [<c0469d8f>] (f2fs_write_data_pages) from [<c02139b9>] 
> > (do_writepages+0x35/0x98)
> > [  141.863995] [<c02139b9>] (do_writepages) from [<c02947ef>] 
> > (__writeback_single_inode+0x2f/0x358)
> > [  141.864004] [<c02947ef>] (__writeback_single_inode) from [<c0294c9d>] 
> > (writeback_sb_inodes+0x185/0x378)
> > [  141.864012] [<c0294c9d>] (writeback_sb_inodes) from [<c0294ec1>] 
> > (__writeback_inodes_wb+0x31/0x88)
> > [  141.864019] [<c0294ec1>] (__writeback_inodes_wb) from [<c029510b>] 
> > (wb_writeback+0x1f3/0x264)
> > [  141.864026] [<c029510b>] (wb_writeback) from [<c0296053>] 
> > (wb_workfn+0x2a3/0x3a4)
> > [  141.864035] [<c0296053>] (wb_workfn) from [<c0130313>] 
> > (process_one_work+0x15f/0x3b0)
> > [  141.864043] [<c0130313>] (process_one_work) from [<c013065f>] 
> > (worker_thread+0xfb/0x3e0)
> > [  141.864053] [<c013065f>] (worker_thread) from [<c0135407>] 
> > (kthread+0xeb/0x10c)
> > [  141.864063] [<c0135407>] (kthread) from [<c0100159>] 
> > (ret_from_fork+0x11/0x38)
> > [  141.864067] Exception stack(0xcf153fb0 to 0xcf153ff8)
> > [  141.864073] 3fa0:                                     00000000 00000000 
> > 00000000 00000000
> > [  141.864079] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 
> > 00000000 00000000
> > [  141.864084] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> > [  141.864089] Mem-Info:
> > [  141.864103] active_anon:105 inactive_anon:9374 isolated_anon:0
> >                  active_file:12581 inactive_file:77234 isolated_file:32
> >                  unevictable:4 dirty:11187 writeback:174
> >                  slab_reclaimable:3566 slab_unreclaimable:6038
> >                  mapped:5698 shmem:414 pagetables:348 bounce:0
> >                  free:10114 free_pcp:223 free_cma:8329
> > [  141.864114] Node 0 active_anon:420kB inactive_anon:37496kB 
> > active_file:50324kB inactive_file:308936kB unevictable:16kB 
> > isolated(anon):0kB isolated(file):128kB mapped:22792kB dirty:44748kB 
> > writeback:696kB shmem:1656kB writeback_tmp:0kB kernel_stack:1216kB 
> > all_unreclaimable? no
> > [  141.864127] Normal free:40456kB min:6904kB low:7604kB high:8304kB 
> > reserved_highatomic:0KB active_anon:420kB inactive_anon:37496kB 
> > active_file:50248kB inactive_file:308768kB unevictable:16kB 
> > writepending:45608kB present:524288kB managed:503884kB mlocked:16kB 
> > pagetables:1392kB bounce:0kB free_pcp:892kB local_pcp:176kB free_cma:33316kB
> > [  141.864129] lowmem_reserve[]: 0 0 0
> > [  141.864135] Normal: 88*4kB (UMEC) 107*8kB (UMEC) 51*16kB (UMEC) 29*32kB 
> > (UMEC) 13*64kB (UMEC) 2*128kB (UE) 3*256kB (UC) 2*512kB (U) 2*1024kB (U) 
> > 0*2048kB 8*4096kB (C) = 40648kB
> > [  141.864162] 90296 total pagecache pages
> > [  141.864168] 0 pages in swap cache
> > [  141.864171] Swap cache stats: add 0, delete 0, find 0/0
> > [  141.864173] Free swap  = 251940kB
> > [  141.864175] Total swap = 251940kB
> > [  141.864177] 131072 pages RAM
> > [  141.864179] 0 pages HighMem/MovableOnly
> > [  141.864181] 5101 pages reserved
> > [  141.864184] 32768 pages cma reserved
> > [  155.171118] warn_alloc: 23 callbacks suppressed
> > [  155.171143] kworker/u8:4: page allocation failure: order:6, 
> > mode:0x40c40(GFP_NOFS|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0
> > [  155.171168] CPU: 1 PID: 1444 Comm: kworker/u8:4 Tainted: G         C     
> >    5.9.0-rc2-sunxi #trunk
> > [  155.171172] Hardware name: Allwinner sun8i Family
> > [  155.171195] Workqueue: writeback wb_workfn (flush-179:0)
> > [  155.171229] [<c010d415>] (unwind_backtrace) from [<c01097a5>] 
> > (show_stack+0x11/0x14)
> > [  155.171243] [<c01097a5>] (show_stack) from [<c0573da1>] 
> > (dump_stack+0x75/0x84)
> > [  155.171266] [<c0573da1>] (dump_stack) from [<c0246163>] 
> > (warn_alloc+0xa3/0x104)
> > [  155.171281] [<c0246163>] (warn_alloc) from [<c0246d71>] 
> > (__alloc_pages_nodemask+0xbad/0xc58)
> > [  155.171294] [<c0246d71>] (__alloc_pages_nodemask) from [<c022a09f>] 
> > (kmalloc_order+0x23/0x50)
> > [  155.171304] [<c022a09f>] (kmalloc_order) from [<c022a0e5>] 
> > (kmalloc_order_trace+0x19/0x90)
> > [  155.171320] [<c022a0e5>] (kmalloc_order_trace) from [<c0481519>] 
> > (zstd_init_compress_ctx+0x51/0xfc)
> > [  155.171334] [<c0481519>] (zstd_init_compress_ctx) from [<c048304b>] 
> > (f2fs_write_multi_pages+0x27b/0x6a0)
> > [  155.171349] [<c048304b>] (f2fs_write_multi_pages) from [<c04699e3>] 
> > (f2fs_write_cache_pages+0x3bf/0x538)
> > [  155.171359] [<c04699e3>] (f2fs_write_cache_pages) from [<c0469d8f>] 
> > (f2fs_write_data_pages+0x233/0x264)
> > [  155.171374] [<c0469d8f>] (f2fs_write_data_pages) from [<c02139b9>] 
> > (do_writepages+0x35/0x98)
> > [  155.171385] [<c02139b9>] (do_writepages) from [<c02947ef>] 
> > (__writeback_single_inode+0x2f/0x358)
> > [  155.171394] [<c02947ef>] (__writeback_single_inode) from [<c0294c9d>] 
> > (writeback_sb_inodes+0x185/0x378)
> > [  155.171402] [<c0294c9d>] (writeback_sb_inodes) from [<c0294ec1>] 
> > (__writeback_inodes_wb+0x31/0x88)
> > [  155.171409] [<c0294ec1>] (__writeback_inodes_wb) from [<c029510b>] 
> > (wb_writeback+0x1f3/0x264)
> > [  155.171417] [<c029510b>] (wb_writeback) from [<c0295ffd>] 
> > (wb_workfn+0x24d/0x3a4)
> > [  155.171428] [<c0295ffd>] (wb_workfn) from [<c0130313>] 
> > (process_one_work+0x15f/0x3b0)
> > [  155.171437] [<c0130313>] (process_one_work) from [<c013065f>] 
> > (worker_thread+0xfb/0x3e0)
> > [  155.171447] [<c013065f>] (worker_thread) from [<c0135407>] 
> > (kthread+0xeb/0x10c)
> > [  155.171457] [<c0135407>] (kthread) from [<c0100159>] 
> > (ret_from_fork+0x11/0x38)
> > [  155.171462] Exception stack(0xcf153fb0 to 0xcf153ff8)
> > [  155.171468] 3fa0:                                     00000000 00000000 
> > 00000000 00000000
> > [  155.171474] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 
> > 00000000 00000000
> > [  155.171480] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> > [  155.171488] Mem-Info:
> > [  155.171504] active_anon:105 inactive_anon:9403 isolated_anon:0
> >                  active_file:17189 inactive_file:52888 isolated_file:0
> >                  unevictable:4 dirty:11785 writeback:50
> >                  slab_reclaimable:4217 slab_unreclaimable:6052
> >                  mapped:5706 shmem:414 pagetables:349 bounce:0
> >                  free:29132 free_pcp:340 free_cma:27347
> > [  155.171516] Node 0 active_anon:420kB inactive_anon:37612kB 
> > active_file:68756kB inactive_file:211552kB unevictable:16kB 
> > isolated(anon):0kB isolated(file):0kB mapped:22824kB dirty:47140kB 
> > writeback:200kB shmem:1656kB writeback_tmp:0kB kernel_stack:1216kB 
> > all_unreclaimable? no
> > [  155.171531] Normal free:116528kB min:6904kB low:7604kB high:8304kB 
> > reserved_highatomic:0KB active_anon:420kB inactive_anon:37612kB 
> > active_file:68680kB inactive_file:211696kB unevictable:16kB 
> > writepending:47352kB present:524288kB managed:503884kB mlocked:16kB 
> > pagetables:1396kB bounce:0kB free_pcp:1356kB local_pcp:8kB free_cma:109388kB
> > [  155.171534] lowmem_reserve[]: 0 0 0
> > [  155.171540] Normal: 365*4kB (UMEC) 188*8kB (UMEC) 153*16kB (UMC) 
> > 111*32kB (UMC) 73*64kB (UMC) 44*128kB (UC) 33*256kB (UC) 18*512kB (UC) 
> > 18*1024kB (UC) 6*2048kB (C) 12*4096kB (C) = 116804kB
> > [  155.171568] 70535 total pagecache pages
> > [  155.171576] 0 pages in swap cache
> > [  155.171579] Swap cache stats: add 0, delete 0, find 0/0
> > [  155.171581] Free swap  = 251940kB
> > [  155.171583] Total swap = 251940kB
> > [  155.171585] 131072 pages RAM
> > [  155.171587] 0 pages HighMem/MovableOnly
> > [  155.171590] 5101 pages reserved
> > [  155.171592] 32768 pages cma reserved
> > 
> > 
> > On Mon, Aug 31, 2020, at 6:39 PM, Chao Yu wrote:
> >> Hi,
> >>
> >> We should align max compress window size of zstd to cluster size of
> >> current inode,
> >> by default, cluster size is 16KB (log size is 2), so it can reduce size
> >> of allocated
> >> memory significantly.
> >>
> >> So, could you please try below patch first?
> >>
> >>   From c4bf178e5133525027d817a2ac542db6f5621c4f Mon Sep 17 00:00:00 2001
> >> From: Chao Yu <[email protected]>
> >> Date: Tue, 1 Sep 2020 09:29:08 +0800
> >> Subject: [PATCH] fix memory allocation failure on zstd decompression
> >>
> >> Signed-off-by: Chao Yu <[email protected]>
> >> ---
> >>    fs/f2fs/compress.c | 7 ++++---
> >>    fs/f2fs/f2fs.h     | 2 +-
> >>    2 files changed, 5 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
> >> index df097c4a71e1..357303d8514b 100644
> >> --- a/fs/f2fs/compress.c
> >> +++ b/fs/f2fs/compress.c
> >> @@ -382,16 +382,17 @@ static int zstd_init_decompress_ctx(struct
> >> decompress_io_ctx *dic)
> >>            ZSTD_DStream *stream;
> >>            void *workspace;
> >>            unsigned int workspace_size;
> >> +  unsigned int max_window_size =
> >> +                  MAX_COMPRESS_WINDOW_SIZE(dic->log_cluster_size);
> >>
> >> -  workspace_size = ZSTD_DStreamWorkspaceBound(MAX_COMPRESS_WINDOW_SIZE);
> >> +  workspace_size = ZSTD_DStreamWorkspaceBound(max_window_size);
> >>
> >>            workspace = f2fs_kvmalloc(F2FS_I_SB(dic->inode),
> >>                                            workspace_size, GFP_NOFS);
> >>            if (!workspace)
> >>                    return -ENOMEM;
> >>
> >> -  stream = ZSTD_initDStream(MAX_COMPRESS_WINDOW_SIZE,
> >> -                                  workspace, workspace_size);
> >> +  stream = ZSTD_initDStream(max_window_size, workspace, workspace_size);
> >>            if (!stream) {
> >>                    printk_ratelimited("%sF2FS-fs (%s): %s ZSTD_initDStream 
> >> failed\n",
> >>                                    KERN_ERR, 
> >> F2FS_I_SB(dic->inode)->sb->s_id,
> >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> >> index 21f86001bb3a..d210809292f9 100644
> >> --- a/fs/f2fs/f2fs.h
> >> +++ b/fs/f2fs/f2fs.h
> >> @@ -1419,7 +1419,7 @@ struct decompress_io_ctx {
> >>    #define NULL_CLUSTER                    ((unsigned int)(~0))
> >>    #define MIN_COMPRESS_LOG_SIZE           2
> >>    #define MAX_COMPRESS_LOG_SIZE           8
> >> -#define MAX_COMPRESS_WINDOW_SIZE  ((PAGE_SIZE) << MAX_COMPRESS_LOG_SIZE)
> >> +#define MAX_COMPRESS_WINDOW_SIZE(log_size)        ((PAGE_SIZE) << 
> >> (log_size))
> >>
> >>    struct f2fs_sb_info {
> >>            struct super_block *sb;                 /* pointer to VFS super 
> >> block */
> >> -- 
> >> 2.26.2
> >>
> >>
> >>
> >> On 2020/9/1 2:14, 5kft wrote:
> >>> Sounds good :-)  Perhaps it's simply that zstd needs a lot of memory to 
> >>> operate, however it's unfortunate that it doesn't work on smaller 
> >>> platforms "out of the box" like lz4 does.  Should there a be note or 
> >>> guidance of some sort regarding this for smaller embedded platforms?
> >>>
> >>> On Mon, Aug 31, 2020, at 11:04 AM, Jaegeuk Kim wrote:
> >>>> Let me add more f2fs folks. :)
> >>>>
> >>>> On 08/27, 5kft wrote:
> >>>>> (Note that for testing this I backported f2fs from 5.9-rc2 into 5.8.5, 
> >>>>> as I don't have 5.9 working on these boards yet.)
> >>>>>
> >>>>> On Thu, Aug 27, 2020, at 7:39 AM, 5kft wrote:
> >>>>>> Quick update - I encounter the problem with f2fs zstd compression in 
> >>>>>> the mainline 5.9-rc2 kernel as well - e.g.,
> >>>>>>
> >>>>>> [   67.668529] F2FS-fs (mmcblk0p1): Found nat_bits in checkpoint
> >>>>>> [   68.339021] F2FS-fs (mmcblk0p1): Mounted with checkpoint version = 
> >>>>>> 76732978
> >>>>>> [   93.862327] kworker/u8:2: page allocation failure: order:6, 
> >>>>>> mode:0x40c40(GFP_NOFS|__GFP_COMP), 
> >>>>>> nodemask=(null),cpuset=/,mems_allowed=0
> >>>>>> [   93.862360] CPU: 0 PID: 187 Comm: kworker/u8:2 Tainted: G         C 
> >>>>>>        5.8.5-sunxi #trunk
> >>>>>> [   93.862364] Hardware name: Allwinner sun8i Family
> >>>>>> [   93.862388] Workqueue: writeback wb_workfn (flush-179:0)
> >>>>>> [   93.862424] [<c010d6d5>] (unwind_backtrace) from [<c0109a55>] 
> >>>>>> (show_stack+0x11/0x14)
> >>>>>> [   93.862439] [<c0109a55>] (show_stack) from [<c056eae9>] 
> >>>>>> (dump_stack+0x75/0x84)
> >>>>>> [   93.862456] [<c056eae9>] (dump_stack) from [<c0243b8f>] 
> >>>>>> (warn_alloc+0xa3/0x104)
> >>>>>> [   93.862469] [<c0243b8f>] (warn_alloc) from [<c0244777>] 
> >>>>>> (__alloc_pages_nodemask+0xb87/0xc40)
> >>>>>> [   93.862483] [<c0244777>] (__alloc_pages_nodemask) from [<c02267fd>] 
> >>>>>> (kmalloc_order+0x19/0x38)
> >>>>>> [   93.862492] [<c02267fd>] (kmalloc_order) from [<c0226835>] 
> >>>>>> (kmalloc_order_trace+0x19/0x90)
> >>>>>> [   93.862506] [<c0226835>] (kmalloc_order_trace) from [<c047ddf5>] 
> >>>>>> (zstd_init_compress_ctx+0x51/0xfc)
> >>>>>> [   93.862518] [<c047ddf5>] (zstd_init_compress_ctx) from [<c047f90b>] 
> >>>>>> (f2fs_write_multi_pages+0x27b/0x6a0)
> >>>>>> [   93.862532] [<c047f90b>] (f2fs_write_multi_pages) from [<c046630d>] 
> >>>>>> (f2fs_write_cache_pages+0x415/0x538)
> >>>>>> [   93.862542] [<c046630d>] (f2fs_write_cache_pages) from [<c0466663>] 
> >>>>>> (f2fs_write_data_pages+0x233/0x264)
> >>>>>> [   93.862555] [<c0466663>] (f2fs_write_data_pages) from [<c0210ded>] 
> >>>>>> (do_writepages+0x35/0x98)
> >>>>>> [   93.862571] [<c0210ded>] (do_writepages) from [<c0290c4f>] 
> >>>>>> (__writeback_single_inode+0x2f/0x358)
> >>>>>> [   93.862584] [<c0290c4f>] (__writeback_single_inode) from 
> >>>>>> [<c02910fd>] (writeback_sb_inodes+0x185/0x378)
> >>>>>> [   93.862594] [<c02910fd>] (writeback_sb_inodes) from [<c0291321>] 
> >>>>>> (__writeback_inodes_wb+0x31/0x88)
> >>>>>> [   93.862603] [<c0291321>] (__writeback_inodes_wb) from [<c029156b>] 
> >>>>>> (wb_writeback+0x1f3/0x264)
> >>>>>> [   93.862612] [<c029156b>] (wb_writeback) from [<c0292461>] 
> >>>>>> (wb_workfn+0x24d/0x3a4)
> >>>>>> [   93.862624] [<c0292461>] (wb_workfn) from [<c0130b2f>] 
> >>>>>> (process_one_work+0x15f/0x3b0)
> >>>>>> [   93.862634] [<c0130b2f>] (process_one_work) from [<c0130e7b>] 
> >>>>>> (worker_thread+0xfb/0x3e0)
> >>>>>> [   93.862646] [<c0130e7b>] (worker_thread) from [<c0135c3b>] 
> >>>>>> (kthread+0xeb/0x10c)
> >>>>>> [   93.862656] [<c0135c3b>] (kthread) from [<c0100159>] 
> >>>>>> (ret_from_fork+0x11/0x38)
> >>>>>> [   93.862661] Exception stack(0xd4167fb0 to 0xd4167ff8)
> >>>>>> [   93.862667] 7fa0:                                     00000000 
> >>>>>> 00000000 00000000 00000000
> >>>>>> [   93.862674] 7fc0: 00000000 00000000 00000000 00000000 00000000 
> >>>>>> 00000000 00000000 00000000
> >>>>>> [   93.862680] 7fe0: 00000000 00000000 00000000 00000000 00000013 
> >>>>>> 00000000
> >>>>>> [   93.862686] Mem-Info:
> >>>>>> [   93.862699] active_anon:3457 inactive_anon:6470 isolated_anon:32
> >>>>>>                   active_file:14148 inactive_file:75224 isolated_file:0
> >>>>>>                   unevictable:4 dirty:10374 writeback:151
> >>>>>>                   slab_reclaimable:4946 slab_unreclaimable:8951
> >>>>>>                   mapped:5557 shmem:414 pagetables:332 bounce:0
> >>>>>>                   free:5946 free_pcp:118 free_cma:4292
> >>>>>> [   93.862709] Node 0 active_anon:13828kB inactive_anon:26032kB 
> >>>>>> active_file:56592kB inactive_file:300896kB unevictable:16kB 
> >>>>>> isolated(anon):0kB isolated(file):0kB mapped:22228kB dirty:41496kB 
> >>>>>> writeback:604kB shmem:1656kB writeback_tmp:0kB all_unreclaimable? no
> >>>>>> [   93.862725] Normal free:23784kB min:6904kB low:7604kB high:8304kB 
> >>>>>> reserved_highatomic:0KB active_anon:13956kB inactive_anon:25800kB 
> >>>>>> active_file:56592kB inactive_file:301212kB unevictable:16kB 
> >>>>>> writepending:42024kB present:524288kB managed:503888kB mlocked:16kB 
> >>>>>> kernel_stack:1200kB pagetables:1328kB bounce:0kB free_pcp:472kB 
> >>>>>> local_pcp:196kB free_cma:17168kB
> >>>>>> [   93.862727] lowmem_reserve[]: 0 0 0
> >>>>>> [   93.862734] Normal: 95*4kB (UMEC) 122*8kB (UMEC) 45*16kB (UMEC) 
> >>>>>> 32*32kB (UMEC) 17*64kB (UMEC) 7*128kB (UMEC) 4*256kB (U) 3*512kB (UC) 
> >>>>>> 0*1024kB 0*2048kB 4*4096kB (C) = 24028kB
> >>>>>> [   93.862762] 89790 total pagecache pages
> >>>>>> [   93.862768] 0 pages in swap cache
> >>>>>> [   93.862771] Swap cache stats: add 0, delete 0, find 0/0
> >>>>>> [   93.862773] Free swap  = 251940kB
> >>>>>> [   93.862775] Total swap = 251940kB
> >>>>>> [   93.862777] 131072 pages RAM
> >>>>>> [   93.862780] 0 pages HighMem/MovableOnly
> >>>>>> [   93.862782] 5100 pages reserved
> >>>>>> [   93.862784] 32768 pages cma reserved
> >>>>>>
> >>>>>> I haven't tried lowering MAX_COMPRESS_LOG_SIZE in this kernel yet but 
> >>>>>> will test this when I can.
> >>>>>>
> >>>>>> On Tue, Aug 25, 2020, at 1:31 PM, 5kft wrote:
> >>>>>>> Note that I don't think that this particular problem is a memleak as 
> >>>>>>> it happens very quickly when simply copying files to the zstd-mounted 
> >>>>>>> filesystem - but I haven't been able to compare the 5.8.3 changes to 
> >>>>>>> 5.9-rc1 yet.  This particular board boots up with vm.min_free_kbytes 
> >>>>>>> = 2406, which seems pretty low, but the board only has 512MB RAM on 
> >>>>>>> it total.  Kind of crazy I know, but it's a good test case for this 
> >>>>>>> problem :-)  Also, again lz4 compression works fine at this low value.
> >>>>>>>
> >>>>>>> I'm not sure that this particular change (lowering 
> >>>>>>> MAX_COMPRESS_LOG_SIZE) helps significantly.  I'm still seeing the 
> >>>>>>> failures even with vm.mem_free_kbytes = 32768 (and this seems like a 
> >>>>>>> rather high value compared to the default).
> >>>>>>>
> >>>>>>> On Tue, Aug 25, 2020, at 12:43 PM, Jaegeuk Kim wrote:
> >>>>>>>> So, if there's no memleak in f2fs but we need to do something like 
> >>>>>>>> that, I feel that something is misconfigured in f2fs wrt zstd.
> >>>>>>>> I took a look at zstd initialization flow, it seems f2fs is asking 
> >>>>>>>> too much memory space for the workspace when comparing it with btrfs.
> >>>>>>>> Could you please check whether replacing the below "8" with "5" 
> >>>>>>>> mitigates the problem? ("5" is used in btrfs.)
> >>>>>>>>
> >>>>>>>> In fs/f2fs/f2fs.h,
> >>>>>>>> #define MAX_COMPRESS_LOG_SIZE           8
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 2020년 8월 25일 (화) 오후 12:30, 5kft <[email protected]>님이 작성:
> >>>>>>>>> __
> >>>>>>>>> Will do!  Quick question - should these changes handle a low 
> >>>>>>>>> "vm.min_free_kbytes" situation with f2fs?  I can workaround for now 
> >>>>>>>>> by increasing this value per-board, although I don't know how high 
> >>>>>>>>> to increase it to (and I'm not sure typical users of f2fs with 
> >>>>>>>>> compression would know how to determine the right value either).
> >>>>>>>>>
> >>>>>>>>> On Tue, Aug 25, 2020, at 12:25 PM, Jaegeuk Kim wrote:
> >>>>>>>>>> Oh, can you try to get the diff from up-to-date f2fs?
> >>>>>>>>>>
> >>>>>>>>>> # cd <5.8.3_branch>
> >>>>>>>>>> # git diff <5.9-rc1_branch> fs/f2fs
> >>>>>>>>>>
> >>>>>>>>>> 2020년 8월 25일 (화) 오전 11:45, 5kft <[email protected]>님이 작성:
> >>>>>>>>>>> __
> >>>>>>>>>>> Indeed these changes are present in 5.8.3 (copy from the 
> >>>>>>>>>>> compress.c on my build):
> >>>>>>>>>>>
> >>>>>>>>>>>                   err = f2fs_write_compressed_pages(cc, submitted,
> >>>>>>>>>>>                                                           wbc, 
> >>>>>>>>>>> io_type);
> >>>>>>>>>>>                   cops->destroy_compress_ctx(cc);
> >>>>>>>>>>>                   kfree(cc->cpages);
> >>>>>>>>>>>                   cc->cpages = NULL;
> >>>>>>>>>>>                   if (!err)
> >>>>>>>>>>>                           return 0;
> >>>>>>>>>>>
> >>>>>>>>>>> On Tue, Aug 25, 2020, at 11:37 AM, Jaegeuk Kim wrote:
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thank you for the test and report. :)
> >>>>>>>>>>>>
> >>>>>>>>>>>> Just to make sure if there's any missing fixes, I guess the gap 
> >>>>>>>>>>>> is the recent 5.9-rc1 updates.
> >>>>>>>>>>>> Looking at a glance, potential memory leak was fixed by the 
> >>>>>>>>>>>> below commit among them. Could you give it a try?
> >>>>>>>>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-stable.git/commit/?h=linux-5.4.y&id=721ef9e46dec3091fa7cd955da99ce83a850ab32
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> 2020년 8월 25일 (화) 오전 11:09, 5kft <[email protected]>님이 작성:
> >>>>>>>>>>>>> __
> >>>>>>>>>>>>> I did a little quick testing further on this problem, and I 
> >>>>>>>>>>>>> found that if I increase "vm.min_free_kbytes" then the 
> >>>>>>>>>>>>> allocations (not surprisingly) work and the failures go away.  
> >>>>>>>>>>>>> E.g., this appears to make it work fine:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>       sysctl -w vm.min_free_kbytes=65536
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I didn't bisect this to find out what the lowest/safe minimum 
> >>>>>>>>>>>>> should be...
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Is there a way that F2FS should indicate that a change like 
> >>>>>>>>>>>>> this may be necessary when using zstd compression on some 
> >>>>>>>>>>>>> platforms?  Perhaps this is just a documentation addition?  I 
> >>>>>>>>>>>>> just want to save others from the pain of a potentially 
> >>>>>>>>>>>>> corrupted filesystem when using zstd compression because F2FS 
> >>>>>>>>>>>>> was internally running out of memory (which is what happened to 
> >>>>>>>>>>>>> me...)
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks!
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Tue, Aug 25, 2020, at 7:47 AM, 5kft wrote:
> >>>>>>>>>>>>>> Hi Jaegeuk,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> First, I'd like to apologize in advance if a direct email 
> >>>>>>>>>>>>>> isn't appropriate for reporting bugs in f2fs; I'm not sure 
> >>>>>>>>>>>>>> what the accepted process is for reporting issues in F2FS.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I am a contributor to the Armbian project 
> >>>>>>>>>>>>>> (https://www.armbian.com/ and https://github.com/armbian), and 
> >>>>>>>>>>>>>> have been using compression in F2FS for some time now - very 
> >>>>>>>>>>>>>> nice work - LZ4 compression works great!  Unfortunately, 
> >>>>>>>>>>>>>> however, when I try using "zstd" compression, I consistently 
> >>>>>>>>>>>>>> get numerous kernel page allocation failures (and not 
> >>>>>>>>>>>>>> surprisingly in some cases corruption of data from the 
> >>>>>>>>>>>>>> filesystem).  I've been seeing this for some time but finally 
> >>>>>>>>>>>>>> got a few minutes to write this email to you.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> What follows is an example of the problem on a small SBC (Nano 
> >>>>>>>>>>>>>> Pi NEO Air - 
> >>>>>>>>>>>>>> https://www.friendlyarm.com/index.php?route=product/product&product_id=151),
> >>>>>>>>>>>>>>  although I have reproduced this issue on some 64-bit ARM A53 
> >>>>>>>>>>>>>> boards as well (e.g., w/1GB RAM, including the Nano Pi NEO2, 
> >>>>>>>>>>>>>> NEO2 Black, etc.)  I have not tried zstd on an amd64 machine 
> >>>>>>>>>>>>>> yet.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> This filesystem is formatted with compression ("-O 
> >>>>>>>>>>>>>> extra_attr,enable_compression"), and mounted to use zstd 
> >>>>>>>>>>>>>> compression ("-o compress_algorithm=zstd"), and the root mount 
> >>>>>>>>>>>>>> directory has compression enabled ("chattr +c mntpt").  After 
> >>>>>>>>>>>>>> doing a simple test copy of a number of files to it, it 
> >>>>>>>>>>>>>> started giving page allocation failures - example traps are 
> >>>>>>>>>>>>>> provided below.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I'm not sure if there are some kernel memory parameters that 
> >>>>>>>>>>>>>> need to be changed or something, but even so it seems to me 
> >>>>>>>>>>>>>> that this sort of thing shouldn't happen by default by a 
> >>>>>>>>>>>>>> filesystem :-)  Here are a couple of example failure cases, 
> >>>>>>>>>>>>>> running on stable kernel 5.8.3:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> [168053.070957] F2FS-fs (mmcblk0p1): Found nat_bits in 
> >>>>>>>>>>>>>> checkpoint
> >>>>>>>>>>>>>> [168053.742204] F2FS-fs (mmcblk0p1): Mounted with checkpoint 
> >>>>>>>>>>>>>> version = 37a48fb3
> >>>>>>>>>>>>>> [168170.268522] kworker/u8:1: page allocation failure: 
> >>>>>>>>>>>>>> order:6, mode:0x40c40(GFP_NOFS|__GFP_COMP), 
> >>>>>>>>>>>>>> nodemask=(null),cpuset=/,mems_allowed=0
> >>>>>>>>>>>>>> [168170.268556] CPU: 3 PID: 7830 Comm: kworker/u8:1 Tainted: G 
> >>>>>>>>>>>>>>         C        5.8.3-sunxi #trunk
> >>>>>>>>>>>>>> [168170.268559] Hardware name: Allwinner sun8i Family
> >>>>>>>>>>>>>> [168170.268580] Workqueue: writeback wb_workfn (flush-179:24)
> >>>>>>>>>>>>>> [168170.268611] [<c010d6d5>] (unwind_backtrace) from 
> >>>>>>>>>>>>>> [<c0109a55>] (show_stack+0x11/0x14)
> >>>>>>>>>>>>>> [168170.268624] [<c0109a55>] (show_stack) from [<c056d489>] 
> >>>>>>>>>>>>>> (dump_stack+0x75/0x84)
> >>>>>>>>>>>>>> [168170.268639] [<c056d489>] (dump_stack) from [<c0243b53>] 
> >>>>>>>>>>>>>> (warn_alloc+0xa3/0x104)
> >>>>>>>>>>>>>> [168170.268651] [<c0243b53>] (warn_alloc) from [<c024473b>] 
> >>>>>>>>>>>>>> (__alloc_pages_nodemask+0xb87/0xc40)
> >>>>>>>>>>>>>> [168170.268662] [<c024473b>] (__alloc_pages_nodemask) from 
> >>>>>>>>>>>>>> [<c02267c5>] (kmalloc_order+0x19/0x38)
> >>>>>>>>>>>>>> [168170.268672] [<c02267c5>] (kmalloc_order) from [<c02267fd>] 
> >>>>>>>>>>>>>> (kmalloc_order_trace+0x19/0x90)
> >>>>>>>>>>>>>> [168170.268685] [<c02267fd>] (kmalloc_order_trace) from 
> >>>>>>>>>>>>>> [<c047c805>] (zstd_init_compress_ctx+0x51/0xfc)
> >>>>>>>>>>>>>> [168170.268697] [<c047c805>] (zstd_init_compress_ctx) from 
> >>>>>>>>>>>>>> [<c047e2bd>] (f2fs_write_multi_pages+0x269/0x68c)
> >>>>>>>>>>>>>> [168170.268708] [<c047e2bd>] (f2fs_write_multi_pages) from 
> >>>>>>>>>>>>>> [<c0465163>] (f2fs_write_cache_pages+0x3bf/0x538)
> >>>>>>>>>>>>>> [168170.268718] [<c0465163>] (f2fs_write_cache_pages) from 
> >>>>>>>>>>>>>> [<c046550f>] (f2fs_write_data_pages+0x233/0x264)
> >>>>>>>>>>>>>> [168170.268730] [<c046550f>] (f2fs_write_data_pages) from 
> >>>>>>>>>>>>>> [<c0210db5>] (do_writepages+0x35/0x98)
> >>>>>>>>>>>>>> [168170.268745] [<c0210db5>] (do_writepages) from [<c0290c17>] 
> >>>>>>>>>>>>>> (__writeback_single_inode+0x2f/0x358)
> >>>>>>>>>>>>>> [168170.268757] [<c0290c17>] (__writeback_single_inode) from 
> >>>>>>>>>>>>>> [<c02910c5>] (writeback_sb_inodes+0x185/0x378)
> >>>>>>>>>>>>>> [168170.268766] [<c02910c5>] (writeback_sb_inodes) from 
> >>>>>>>>>>>>>> [<c02912e9>] (__writeback_inodes_wb+0x31/0x88)
> >>>>>>>>>>>>>> [168170.268776] [<c02912e9>] (__writeback_inodes_wb) from 
> >>>>>>>>>>>>>> [<c0291533>] (wb_writeback+0x1f3/0x264)
> >>>>>>>>>>>>>> [168170.268783] [<c0291533>] (wb_writeback) from [<c0292429>] 
> >>>>>>>>>>>>>> (wb_workfn+0x24d/0x3a4)
> >>>>>>>>>>>>>> [168170.268794] [<c0292429>] (wb_workfn) from [<c0130b2f>] 
> >>>>>>>>>>>>>> (process_one_work+0x15f/0x3b0)
> >>>>>>>>>>>>>> [168170.268803] [<c0130b2f>] (process_one_work) from 
> >>>>>>>>>>>>>> [<c0130e7b>] (worker_thread+0xfb/0x3e0)
> >>>>>>>>>>>>>> [168170.268813] [<c0130e7b>] (worker_thread) from [<c0135c3b>] 
> >>>>>>>>>>>>>> (kthread+0xeb/0x10c)
> >>>>>>>>>>>>>> [168170.268824] [<c0135c3b>] (kthread) from [<c0100159>] 
> >>>>>>>>>>>>>> (ret_from_fork+0x11/0x38)
> >>>>>>>>>>>>>> [168170.268829] Exception stack(0xccb67fb0 to 0xccb67ff8)
> >>>>>>>>>>>>>> [168170.268835] 7fa0:                                     
> >>>>>>>>>>>>>> 00000000 00000000 00000000 00000000
> >>>>>>>>>>>>>> [168170.268842] 7fc0: 00000000 00000000 00000000 00000000 
> >>>>>>>>>>>>>> 00000000 00000000 00000000 00000000
> >>>>>>>>>>>>>> [168170.268848] 7fe0: 00000000 00000000 00000000 00000000 
> >>>>>>>>>>>>>> 00000013 00000000
> >>>>>>>>>>>>>> [168170.268853] Mem-Info:
> >>>>>>>>>>>>>> [168170.268867] active_anon:2089 inactive_anon:5866 
> >>>>>>>>>>>>>> isolated_anon:0
> >>>>>>>>>>>>>>                    active_file:41402 inactive_file:37715 
> >>>>>>>>>>>>>> isolated_file:0
> >>>>>>>>>>>>>>                    unevictable:4 dirty:9162 writeback:90
> >>>>>>>>>>>>>>                    slab_reclaimable:5935 
> >>>>>>>>>>>>>> slab_unreclaimable:10851
> >>>>>>>>>>>>>>                    mapped:4694 shmem:881 pagetables:369 
> >>>>>>>>>>>>>> bounce:0
> >>>>>>>>>>>>>>                    free:12678 free_pcp:201 free_cma:11324
> >>>>>>>>>>>>>> [168170.268877] Node 0 active_anon:8356kB 
> >>>>>>>>>>>>>> inactive_anon:23464kB active_file:165608kB 
> >>>>>>>>>>>>>> inactive_file:150860kB unevictable:16kB isolated(anon):0kB 
> >>>>>>>>>>>>>> isolated(file):0kB mapped:18776kB dirty:36648kB 
> >>>>>>>>>>>>>> writeback:360kB shmem:3524kB writeback_tmp:0kB 
> >>>>>>>>>>>>>> all_unreclaimable? no
> >>>>>>>>>>>>>> [168170.268891] Normal free:50712kB min:6500kB low:7100kB 
> >>>>>>>>>>>>>> high:7700kB reserved_highatomic:0KB active_anon:8356kB 
> >>>>>>>>>>>>>> inactive_anon:23464kB active_file:165764kB 
> >>>>>>>>>>>>>> inactive_file:150884kB unevictable:16kB writepending:36944kB 
> >>>>>>>>>>>>>> present:524288kB managed:503888kB mlocked:16kB 
> >>>>>>>>>>>>>> kernel_stack:1144kB pagetables:1476kB bounce:0kB 
> >>>>>>>>>>>>>> free_pcp:828kB local_pcp:116kB free_cma:45296kB
> >>>>>>>>>>>>>> [168170.268893] lowmem_reserve[]: 0 0 0
> >>>>>>>>>>>>>> [168170.268899] Normal: 1096*4kB (UMEC) 217*8kB (UMEC) 
> >>>>>>>>>>>>>> 132*16kB (UMEC) 82*32kB (UMEC) 283*64kB (UC) 72*128kB (C) 
> >>>>>>>>>>>>>> 16*256kB (UC) 9*512kB (UC) 4*1024kB (C) 0*2048kB 0*4096kB = 
> >>>>>>>>>>>>>> 50984kB
> >>>>>>>>>>>>>> [168170.268927] 80105 total pagecache pages
> >>>>>>>>>>>>>> [168170.268933] 72 pages in swap cache
> >>>>>>>>>>>>>> [168170.268937] Swap cache stats: add 5255, delete 5182, find 
> >>>>>>>>>>>>>> 5492/6131
> >>>>>>>>>>>>>> [168170.268939] Free swap  = 232484kB
> >>>>>>>>>>>>>> [168170.268941] Total swap = 251940kB
> >>>>>>>>>>>>>> [168170.268944] 131072 pages RAM
> >>>>>>>>>>>>>> [168170.268946] 0 pages HighMem/MovableOnly
> >>>>>>>>>>>>>> [168170.268948] 5100 pages reserved
> >>>>>>>>>>>>>> [168170.268951] 32768 pages cma reserved
> >>>>>>>>>>>>>> [168182.775001] warn_alloc: 84 callbacks suppressed
> >>>>>>>>>>>>>> [168182.775115] kworker/u9:3: page allocation failure: 
> >>>>>>>>>>>>>> order:9, mode:0x40c40(GFP_NOFS|__GFP_COMP), 
> >>>>>>>>>>>>>> nodemask=(null),cpuset=/,mems_allowed=0
> >>>>>>>>>>>>>> [168182.775235] CPU: 3 PID: 8168 Comm: kworker/u9:3 Tainted: G 
> >>>>>>>>>>>>>>         C        5.8.3-sunxi #trunk
> >>>>>>>>>>>>>> [168182.775246] Hardware name: Allwinner sun8i Family
> >>>>>>>>>>>>>> [168182.775367] Workqueue: f2fs_post_read_wq 
> >>>>>>>>>>>>>> f2fs_post_read_work
> >>>>>>>>>>>>>> [168182.775534] [<c010d6d5>] (unwind_backtrace) from 
> >>>>>>>>>>>>>> [<c0109a55>] (show_stack+0x11/0x14)
> >>>>>>>>>>>>>> [168182.775584] [<c0109a55>] (show_stack) from [<c056d489>] 
> >>>>>>>>>>>>>> (dump_stack+0x75/0x84)
> >>>>>>>>>>>>>> [168182.775658] [<c056d489>] (dump_stack) from [<c0243b53>] 
> >>>>>>>>>>>>>> (warn_alloc+0xa3/0x104)
> >>>>>>>>>>>>>> [168182.775689] [<c0243b53>] (warn_alloc) from [<c024473b>] 
> >>>>>>>>>>>>>> (__alloc_pages_nodemask+0xb87/0xc40)
> >>>>>>>>>>>>>> [168182.775731] [<c024473b>] (__alloc_pages_nodemask) from 
> >>>>>>>>>>>>>> [<c02267c5>] (kmalloc_order+0x19/0x38)
> >>>>>>>>>>>>>> [168182.775757] [<c02267c5>] (kmalloc_order) from [<c02267fd>] 
> >>>>>>>>>>>>>> (kmalloc_order_trace+0x19/0x90)
> >>>>>>>>>>>>>> [168182.775797] [<c02267fd>] (kmalloc_order_trace) from 
> >>>>>>>>>>>>>> [<c047c665>] (zstd_init_decompress_ctx+0x21/0x88)
> >>>>>>>>>>>>>> [168182.775837] [<c047c665>] (zstd_init_decompress_ctx) from 
> >>>>>>>>>>>>>> [<c047e9cf>] (f2fs_decompress_pages+0x97/0x228)
> >>>>>>>>>>>>>> [168182.775860] [<c047e9cf>] (f2fs_decompress_pages) from 
> >>>>>>>>>>>>>> [<c045d0ab>] (__read_end_io+0xfb/0x130)
> >>>>>>>>>>>>>> [168182.775871] [<c045d0ab>] (__read_end_io) from [<c045d141>] 
> >>>>>>>>>>>>>> (f2fs_post_read_work+0x61/0x84)
> >>>>>>>>>>>>>> [168182.775884] [<c045d141>] (f2fs_post_read_work) from 
> >>>>>>>>>>>>>> [<c0130b2f>] (process_one_work+0x15f/0x3b0)
> >>>>>>>>>>>>>> [168182.775893] [<c0130b2f>] (process_one_work) from 
> >>>>>>>>>>>>>> [<c0130e7b>] (worker_thread+0xfb/0x3e0)
> >>>>>>>>>>>>>> [168182.775905] [<c0130e7b>] (worker_thread) from [<c0135c3b>] 
> >>>>>>>>>>>>>> (kthread+0xeb/0x10c)
> >>>>>>>>>>>>>> [168182.775919] [<c0135c3b>] (kthread) from [<c0100159>] 
> >>>>>>>>>>>>>> (ret_from_fork+0x11/0x38)
> >>>>>>>>>>>>>> [168182.775924] Exception stack(0xcfd5ffb0 to 0xcfd5fff8)
> >>>>>>>>>>>>>> [168182.775930] ffa0:                                     
> >>>>>>>>>>>>>> 00000000 00000000 00000000 00000000
> >>>>>>>>>>>>>> [168182.775937] ffc0: 00000000 00000000 00000000 00000000 
> >>>>>>>>>>>>>> 00000000 00000000 00000000 00000000
> >>>>>>>>>>>>>> [168182.775943] ffe0: 00000000 00000000 00000000 00000000 
> >>>>>>>>>>>>>> 00000013 00000000
> >>>>>>>>>>>>>> [168182.775949] Mem-Info:
> >>>>>>>>>>>>>> [168182.775968] active_anon:2361 inactive_anon:4620 
> >>>>>>>>>>>>>> isolated_anon:0
> >>>>>>>>>>>>>>                    active_file:16267 inactive_file:15209 
> >>>>>>>>>>>>>> isolated_file:0
> >>>>>>>>>>>>>>                    unevictable:4 dirty:3287 writeback:0
> >>>>>>>>>>>>>>                    slab_reclaimable:5976 
> >>>>>>>>>>>>>> slab_unreclaimable:11441
> >>>>>>>>>>>>>>                    mapped:3760 shmem:485 pagetables:396 
> >>>>>>>>>>>>>> bounce:0
> >>>>>>>>>>>>>>                    free:60170 free_pcp:71 free_cma:25015
> >>>>>>>>>>>>>> [168182.775980] Node 0 active_anon:9444kB 
> >>>>>>>>>>>>>> inactive_anon:18480kB active_file:65068kB 
> >>>>>>>>>>>>>> inactive_file:60836kB unevictable:16kB isolated(anon):0kB 
> >>>>>>>>>>>>>> isolated(file):0kB mapped:15040kB dirty:13148kB writeback:0kB 
> >>>>>>>>>>>>>> shmem:1940kB writeback_tmp:0kB all_unreclaimable? no
> >>>>>>>>>>>>>> [168182.775995] Normal free:240680kB min:2404kB low:3004kB 
> >>>>>>>>>>>>>> high:3604kB reserved_highatomic:0KB active_anon:9444kB 
> >>>>>>>>>>>>>> inactive_anon:18480kB active_file:65068kB 
> >>>>>>>>>>>>>> inactive_file:60836kB unevictable:16kB writepending:13112kB 
> >>>>>>>>>>>>>> present:524288kB managed:503888kB mlocked:16kB 
> >>>>>>>>>>>>>> kernel_stack:1168kB pagetables:1584kB bounce:0kB 
> >>>>>>>>>>>>>> free_pcp:280kB local_pcp:16kB free_cma:100060kB
> >>>>>>>>>>>>>> [168182.775996] lowmem_reserve[]: 0 0 0
> >>>>>>>>>>>>>> [168182.776003] Normal: 4668*4kB (UMEC) 4945*8kB (UMEC) 
> >>>>>>>>>>>>>> 3001*16kB (UEC) 1684*32kB (UMEC) 584*64kB (UMEC) 157*128kB 
> >>>>>>>>>>>>>> (UMEC) 39*256kB (UMEC) 12*512kB (UMC) 7*1024kB (UMC) 0*2048kB 
> >>>>>>>>>>>>>> 0*4096kB = 240904kB
> >>>>>>>>>>>>>> [168182.776032] 32082 total pagecache pages
> >>>>>>>>>>>>>> [168182.776039] 66 pages in swap cache
> >>>>>>>>>>>>>> [168182.776043] Swap cache stats: add 6730, delete 6663, find 
> >>>>>>>>>>>>>> 5492/6140
> >>>>>>>>>>>>>> [168182.776045] Free swap  = 227108kB
> >>>>>>>>>>>>>> [168182.776047] Total swap = 251940kB
> >>>>>>>>>>>>>> [168182.776050] 131072 pages RAM
> >>>>>>>>>>>>>> [168182.776052] 0 pages HighMem/MovableOnly
> >>>>>>>>>>>>>> [168182.776054] 5100 pages reserved
> >>>>>>>>>>>>>> [168182.776056] 32768 pages cma reserved
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Again, I've had no issues on any of my boards when using lz4 
> >>>>>>>>>>>>>> compression, only with zstd.  (I have not had an opportunity 
> >>>>>>>>>>>>>> to try lzo-rle yet.)  I'm happy to try to provide more 
> >>>>>>>>>>>>>> information if necessary.  Thanks!
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> Linux-f2fs-devel mailing list
> >>> [email protected]
> >>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> >>>
> >>
> > .
> > 
>


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to