From c3fab428a1fdc02cb0d5f4bba7e88ec94056e96f Mon Sep 17 00:00:00 2001 From: corwin Date: Mon, 13 Feb 2023 20:32:58 -0500 Subject: [PATCH] Version 6.2.8.7 - Fixed bug in read-only rebuild when the logical size of the volume is an exact multiple of 821 4K blocks. --- kvdo.spec | 7 ++++--- vdo/Makefile | 2 +- vdo/base/referenceCountRebuild.c | 5 ++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/kvdo.spec b/kvdo.spec index 83decab8..d37e0466 100644 --- a/kvdo.spec +++ b/kvdo.spec @@ -1,6 +1,6 @@ %define spec_release 1 %define kmod_name kvdo -%define kmod_driver_version 6.2.8.6 +%define kmod_driver_version 6.2.8.7 %define kmod_rpm_release %{spec_release} %define kmod_kernel_version 3.10.0-693.el7 @@ -96,5 +96,6 @@ rm -rf $RPM_BUILD_ROOT %{_usr}/src/%{kmod_name}-%{version} %changelog -* Tue Dec 13 2022 - Red Hat VDO Team - 6.2.8.6-1 -- Added a check for 0 length table line arguments. +* Mon Feb 13 2023 - Red Hat VDO Team - 6.2.8.7-1 +- Fixed bug in read-only rebuild when the logical size of the volume is an + exact multiple of 821 4K blocks. diff --git a/vdo/Makefile b/vdo/Makefile index ff7dc8f5..80e29728 100644 --- a/vdo/Makefile +++ b/vdo/Makefile @@ -1,4 +1,4 @@ -VDO_VERSION = 6.2.8.6 +VDO_VERSION = 6.2.8.7 VDO_VERSION_MAJOR = $(word 1,$(subst ., ,$(VDO_VERSION))) VDO_VERSION_MINOR = $(word 2,$(subst ., ,$(VDO_VERSION))) diff --git a/vdo/base/referenceCountRebuild.c b/vdo/base/referenceCountRebuild.c index 4242d0ae..4c0f1650 100644 --- a/vdo/base/referenceCountRebuild.c +++ b/vdo/base/referenceCountRebuild.c @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * - * $Id: //eng/vdo-releases/aluminum/src/c++/vdo/base/referenceCountRebuild.c#6 $ + * $Id: //eng/vdo-releases/aluminum/src/c++/vdo/base/referenceCountRebuild.c#7 $ */ #include "referenceCountRebuild.h" @@ -417,6 +417,9 @@ static void rebuildFromLeaves(VDOCompletion *completion) .slot = rebuild->blockMap->entryCount % BLOCK_MAP_ENTRIES_PER_PAGE, .pbn = findBlockMapPagePBN(rebuild->blockMap, rebuild->leafPages - 1), }; + if (rebuild->lastSlot.slot == 0) { + rebuild->lastSlot.slot = BLOCK_MAP_ENTRIES_PER_PAGE; + } // Prevent any page from being processed until all pages have been launched. rebuild->launching = true;