• Alexander Aring's avatar
    dlm: drop dlm_scand kthread and use timers · b1f2381c
    Alexander Aring authored
    Currently the scand kthread acts like a garbage collection for expired
    rsbs on toss list, to clean them up after a certain timeout. It triggers
    every couple of seconds and iterates over the toss list while holding
    ls_rsbtbl_lock for the whole hash bucket iteration.
    
    To reduce the amount of time holding ls_rsbtbl_lock, we now handle the
    disposal of expired rsbs using a per-lockspace timer that expires for the
    earliest tossed rsb on the lockspace toss queue. This toss queue is
    ordered according to the rsb res_toss_time with the earliest tossed rsb
    as the first entry. The toss timer will only trylock() necessary locks,
    since it is low priority garbage collection, and will rearm the timer
    if trylock() fails. If the timer function does not find any expired
    rsb's, it rearms the timer with the next earliest expired rsb.
    Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
    Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
    b1f2381c
recover.c 22 KB