• Joe Thornber's avatar
    dm bufio: add dm_buffer_cache abstraction · 2cd7a6d4
    Joe Thornber authored
    The buffer cache is responsible for managing the holder count,
    tracking clean/dirty state, and choosing buffers via predicates.
    Higher level code is responsible for allocation of buffers, IO and
    eviction/cache sizing.
    
    The buffer cache has thread safe methods for acquiring a reference
    to an existing buffer. All other methods in buffer cache are _not_
    threadsafe, and only contain enough locking to guarantee the safe
    methods.
    
    Rather than a single mutex, sharded rw_semaphores are used to allow
    concurrent threads to 'get' buffers. Each rw_semaphore protects its
    own rbtree of buffer entries.
    
    Code that uses this new dm_buffer_cache abstraction will be introduced
    in a following commit.
    
    This commit moves the dm_buffer struct in preparation for finer grained
    dm_buffer changes, in the next commit, to be more easily seen. It also
    introduces temporary dm_buffer struct members to allow compilation of
    this intermediate commit (they will be elided in the next commit).
    
    This commit will cause "defined but not used" compiler warnings that
    will be resolved by the next commit.
    Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    2cd7a6d4
dm-bufio.c 65.4 KB