• J
    ovl: implement async IO routines · b7706b3d
    Jiufei Xue 提交于
    A performance regression is observed since linux v4.19 when we do aio
    test using fio with iodepth 128 on overlayfs. And we found that queue
    depth of the device is always 1 which is unexpected.
    
    After investigation, it is found that commit 16914e6f
    ("ovl: add ovl_read_iter()") and commit 2a92e07e
    ("ovl: add ovl_write_iter()") use do_iter_readv_writev() to submit
    requests to real filesystem. Async IOs are converted to sync IOs here
    and cause performance regression.
    
    So implement async IO for stacked reading and writing.
    
    Changes since v1:
      - add a cleanup helper for completion/error handling
      - handle the case when aio_req allocation failed
    Signed-off-by: NJiufei Xue <jiufei.xue@linux.alibaba.com>
    Reviewed-by: NJoseph Qi <joseph.qi@linux.alibaba.com>
    b7706b3d
file.c 16.2 KB