• Shaohua Li's avatar
    raid5: only wakeup necessary threads · bfc90cb0
    Shaohua Li authored
    If there are not enough stripes to handle, we'd better not always
    queue all available work_structs. If one worker can only handle small
    or even none stripes, it will impact request merge and create lock
    contention.
    
    With this patch, the number of work_struct running will depend on
    pending stripes number. Note: some statistics info used in the patch
    are accessed without locking protection. This should doesn't matter,
    we just try best to avoid queue unnecessary work_struct.
    Signed-off-by: default avatarShaohua Li <shli@fusionio.com>
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    bfc90cb0
raid5.c 190 KB