• Tang Junhui's avatar
    bcache: segregate flash only volume write streams · 4eca1cb2
    Tang Junhui authored
    In such scenario that there are some flash only volumes
    , and some cached devices, when many tasks request these devices in
    writeback mode, the write IOs may fall to the same bucket as bellow:
    | cached data | flash data | cached data | cached data| flash data|
    then after writeback of these cached devices, the bucket would
    be like bellow bucket:
    | free | flash data | free | free | flash data |
    
    So, there are many free space in this bucket, but since data of flash
    only volumes still exists, so this bucket cannot be reclaimable,
    which would cause waste of bucket space.
    
    In this patch, we segregate flash only volume write streams from
    cached devices, so data from flash only volumes and cached devices
    can store in different buckets.
    
    Compare to v1 patch, this patch do not add a additionally open bucket
    list, and it is try best to segregate flash only volume write streams
    from cached devices, sectors of flash only volumes may still be mixed
    with dirty sectors of cached device, but the number is very small.
    
    [mlyle: fixed commit log formatting, permissions, line endings]
    Signed-off-by: default avatarTang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: default avatarMichael Lyle <mlyle@lyle.org>
    Signed-off-by: default avatarMichael Lyle <mlyle@lyle.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    4eca1cb2
alloc.c 18.6 KB