• Alexander Aring's avatar
    dlm: async freeing of lockspace resources · 94e180d6
    Alexander Aring authored
    This patch handles freeing of lockspace resources asynchronously besides
    the release_lockspace() context. The release_lockspace() context is
    sometimes called in a time critical context, e.g. umount syscall. Most
    every user space init system will timeout if it takes too long. To
    reduce the potential waiting time we deregister in release_lockspace()
    the lockspace from the DLM subsystem and do the actual releasing of
    lockspace resource in a worker of a workqueue following recommendation
    of:
    
    https://lore.kernel.org/all/49925af7-78a8-a3dd-bce6-cfc02e1a9236@I-love.SAKURA.ne.jp/T/#u
    
    as flushing of system workqueues are not allowed. The most time to
    release the DLM resources are spent to release the data structures
    "ls->ls_lkbxa" and "ls->ls_rsbtbl" as they iterate over each entries and
    those data structures can contain millions of entries. This patch handles
    for now only freeing of those data structures as those operations are
    the most reason why release_lockspace() blocking of being returned.
    Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
    Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
    94e180d6
lockspace.c 19.3 KB