lkml.org 
[lkml]   [2016]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] mm/zpool: use workqueue for zpool_destroy
    On (04/25/16 15:18), Yu Zhao wrote:
    > On Mon, Apr 25, 2016 at 05:20:10PM -0400, Dan Streetman wrote:
    > > Add a work_struct to struct zpool, and change zpool_destroy_pool to
    > > defer calling the pool implementation destroy.
    > >
    > > The zsmalloc pool destroy function, which is one of the zpool
    > > implementations, may sleep during destruction of the pool. However
    > > zswap, which uses zpool, may call zpool_destroy_pool from atomic
    > > context. So we need to defer the call to the zpool implementation
    > > to destroy the pool.
    > >
    > > This is essentially the same as Yu Zhao's proposed patch to zsmalloc,
    > > but moved to zpool.
    >
    > Thanks, Dan. Sergey also mentioned another call path that triggers the
    > same problem (BUG: scheduling while atomic):
    > rcu_process_callbacks()
    > __zswap_pool_release()
    > zswap_pool_destroy()
    > zswap_cpu_comp_destroy()
    > cpu_notifier_register_begin()
    > mutex_lock(&cpu_add_remove_lock);
    > So I was thinking zswap_pool_destroy() might be done in workqueue in zswap.c.
    > This way we fix both call paths.

    right, I'm not sure the patch addressed all of the issues.

    -ss

    \
     
     \ /
      Last update: 2016-04-26 03:01    [W:3.324 / U:0.304 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site