lkml.org 
[lkml]   [2022]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 017/102] dm mirror log: clear log bits up to BITS_PER_LONG boundary
    Date
    From: Mikulas Patocka <mpatocka@redhat.com>

    commit 90736eb3232d208ee048493f371075e4272e0944 upstream.

    Commit 85e123c27d5c ("dm mirror log: round up region bitmap size to
    BITS_PER_LONG") introduced a regression on 64-bit architectures in the
    lvm testsuite tests: lvcreate-mirror, mirror-names and vgsplit-operation.

    If the device is shrunk, we need to clear log bits beyond the end of the
    device. The code clears bits up to a 32-bit boundary and then calculates
    lc->sync_count by summing set bits up to a 64-bit boundary (the commit
    changed that; previously, this boundary was 32-bit too). So, it was using
    some non-zeroed bits in the calculation and this caused misbehavior.

    Fix this regression by clearing bits up to BITS_PER_LONG boundary.

    Fixes: 85e123c27d5c ("dm mirror log: round up region bitmap size to BITS_PER_LONG")
    Cc: stable@vger.kernel.org
    Reported-by: Benjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/md/dm-log.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/md/dm-log.c
    +++ b/drivers/md/dm-log.c
    @@ -615,7 +615,7 @@ static int disk_resume(struct dm_dirty_l
    log_clear_bit(lc, lc->clean_bits, i);

    /* clear any old bits -- device has shrunk */
    - for (i = lc->region_count; i % (sizeof(*lc->clean_bits) << BYTE_SHIFT); i++)
    + for (i = lc->region_count; i % BITS_PER_LONG; i++)
    log_clear_bit(lc, lc->clean_bits, i);

    /* copy clean across to sync */

    \
     
     \ /
      Last update: 2022-06-27 13:25    [W:4.873 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site