• Qu Wenruo's avatar
    btrfs: Added btrfs_workqueue_struct implemented ordered execution based on kernel workqueue · 08a9ff32
    Qu Wenruo authored
    Use kernel workqueue to implement a new btrfs_workqueue_struct, which
    has the ordering execution feature like the btrfs_worker.
    
    The func is executed in a concurrency way, and the
    ordred_func/ordered_free is executed in the sequence them are queued
    after the corresponding func is done.
    
    The new btrfs_workqueue works much like the original one, one workqueue
    for normal work and a list for ordered work.
    When a work is queued, ordered work will be added to the list and helper
    function will be queued into the workqueue.
    The helper function will execute a normal work and then check and execute as many
    ordered work as possible in the sequence they were queued.
    
    At this patch, high priority work queue or thresholding is not added yet.
    The high priority feature and thresholding will be added in the following patches.
    Signed-off-by: default avatarQu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Tested-by: default avatarDavid Sterba <dsterba@suse.cz>
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    08a9ff32
async-thread.h 4.75 KB