• Lars Ellenberg's avatar
    drbd: al_write_transaction: skip re-scanning of bitmap page pointer array · 27ea1d87
    Lars Ellenberg authored
    For larger devices, the array of bitmap page pointers can grow very
    large (8000 pointers per TB of storage).
    
    For each activity log transaction, we need to flush the associated
    bitmap pages to stable storage. Currently, we just "mark" the respective
    pages while setting up the transaction, then tell the bitmap code to
    write out all marked pages, but skip unchanged pages.
    
    But one such transaction can affect only a small number of bitmap pages,
    there is no need to scan the full array of several (ten-)thousand
    page pointers to find the few marked ones.
    
    Instead, remember the index numbers of the few affected pages,
    and later only re-check those to skip duplicates and unchanged ones.
    Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    27ea1d87
drbd_int.h 81.1 KB