• Andrey Konovalov's avatar
    lib/stackdepot: use read/write lock · a6cd9570
    Andrey Konovalov authored
    Currently, stack depot uses the following locking scheme:
    
    1. Lock-free accesses when looking up a stack record, which allows to
       have multiple users to look up records in parallel;
    2. Spinlock for protecting the stack depot pools and the hash table
       when adding a new record.
    
    For implementing the eviction of stack traces from stack depot, the
      lock-free approach is not going to work anymore, as we will need to be
      able to also remove records from the hash table.
    
    Convert the spinlock into a read/write lock, and drop the atomic
      accesses, as they are no longer required.
    
    Looking up stack traces is now protected by the read lock and adding new
      records - by the write lock.  One of the following patches will add a
      new function for evicting stack records, which will be protected by the
      write lock as well.
    
    With this change, multiple users can still look up records in parallel.
    
    This is preparatory patch for implementing the eviction of stack records
      from the stack depot.
    
    Link: https://lkml.kernel.org/r/9f81ffcc4bb422ebb6326a65a770bf1918634cbb.1700502145.git.andreyknvl@google.comSigned-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Reviewed-by: default avatarAlexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Evgenii Stepanov <eugenis@google.com>
    Cc: Marco Elver <elver@google.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    a6cd9570
stackdepot.c 16.6 KB