• Mike Snitzer's avatar
    dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros · 9567366f
    Mike Snitzer authored
    The READ_LOCK macro was incorrectly returning -EINVAL if
    dm_bm_is_read_only() was true -- it will always be true once the cache
    metadata transitions to read-only by dm_cache_metadata_set_read_only().
    
    Wrap READ_LOCK and WRITE_LOCK multi-statement macros in do {} while(0).
    Also, all accesses of the 'cmd' argument passed to these related macros
    are now encapsulated in parenthesis.
    
    A follow-up patch can be developed to eliminate the use of macros in
    favor of pure C code.  Avoiding that now given that this needs to apply
    to stable@.
    Reported-by: default avatarBen Hutchings <ben@decadent.org.uk>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Fixes: d14fcf3d ("dm cache: make sure every metadata function checks fail_io")
    Cc: stable@vger.kernel.org
    9567366f
dm-cache-metadata.c 34.9 KB