• Shaohua Li's avatar
    nullb: emulate cache · deb78b41
    Shaohua Li authored
    Software must flush disk cache to guarantee data safety. To check if
    software correctly does disk cache flush, we must know the behavior of
    disk. But physical disk behavior is uncontrollable. Even software
    doesn't do the flush, the disk probably does the flush. This patch tries
    to emulate a cache in the test disk.
    
    All write will go to a cache first, when the cache is full, we then
    flush some data to disk storage. A flush request will flush all data of
    the cache to disk storage. A FUA write will write to memory store
    directly and revalidate data in cache. If there is a power failure (by
    writing to power attribute, 'echo 0 > disk_name/power'), we discard all
    data in the cache, but preserve the data in disk storage. Later we can
    power on the disk again as usual (write 1 to 'power' attribute), then we
    can check data integrity and very if software does everything correctly.
    
    A new attribute 'cache_size' (in MB) is added to configure cache size.
    
    Based on original patch from Kyungchan Koh
    Signed-off-by: default avatarKyungchan Koh <kkc6196@fb.com>
    Signed-off-by: default avatarShaohua Li <shli@fb.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    deb78b41
null_blk.c 46 KB