• Chao Yu's avatar
    f2fs: introduce private bioset · f543805f
    Chao Yu authored
    In low memory scenario, we can allocate multiple bios without
    submitting any of them.
    
    - f2fs_write_checkpoint()
     - block_operations()
      - f2fs_sync_node_pages()
       step 1) flush cold nodes, allocate new bio from mempool
       - bio_alloc()
        - mempool_alloc()
       step 2) flush hot nodes, allocate a bio from mempool
       - bio_alloc()
        - mempool_alloc()
       step 3) flush warm nodes, be stuck in below call path
       - bio_alloc()
        - mempool_alloc()
         - loop to wait mempool element release, as we only
           reserved memory for two bio allocation, however above
           allocated two bios may never be submitted.
    
    So we need avoid using default bioset, in this patch we introduce a
    private bioset, in where we enlarg mempool element count to total
    number of log header, so that we can make sure we have enough
    backuped memory pool in scenario of allocating/holding multiple
    bios.
    Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    f543805f
data.c 79.9 KB