Skip to content

Commit

Permalink
Version 6.1.0.185
Browse files Browse the repository at this point in the history
- Fixed a potential stack overflow when reaping the recovery journal.
  • Loading branch information
corwin committed Sep 5, 2018
1 parent fb4b94f commit 0aba30f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
6 changes: 3 additions & 3 deletions kvdo.spec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
%define spec_release 1

%define kmod_name kvdo
%define kmod_driver_version 6.1.0.181
%define kmod_driver_version 6.1.0.185
%define kmod_rpm_release %{spec_release}
%define kmod_kernel_version 3.10.0-693.el7
%define kmod_headers_version %(rpm -qa kernel-devel | sed 's/^kernel-devel-//')
Expand Down Expand Up @@ -196,5 +196,5 @@ install -m 644 -D $PWD/obj/%{kmod_kbuild_dir}/Module.symvers $RPM_BUILD_ROOT/usr
rm -rf $RPM_BUILD_ROOT

%changelog
* Fri Jul 20 2018 - J. corwin Coburn <[email protected]> - 6.1.0.181-1
HASH(0x1b7e068)
* Wed Sep 05 2018 - J. corwin Coburn <[email protected]> - 6.1.0.185-1
HASH(0x1a519e0)
2 changes: 1 addition & 1 deletion vdo/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VDO_VERSION = 6.1.0.181
VDO_VERSION = 6.1.0.185

VDO_VERSION_MAJOR = $(word 1,$(subst ., ,$(VDO_VERSION)))
VDO_VERSION_MINOR = $(word 2,$(subst ., ,$(VDO_VERSION)))
Expand Down
22 changes: 15 additions & 7 deletions vdo/base/recoveryJournal.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*
* $Id: //eng/vdo-releases/magnesium-rhel7.5/src/c++/vdo/base/recoveryJournal.c#2 $
* $Id: //eng/vdo-releases/magnesium-rhel7.5/src/c++/vdo/base/recoveryJournal.c#3 $
*/

#include "recoveryJournal.h"
Expand Down Expand Up @@ -1395,12 +1395,20 @@ static void reapRecoveryJournal(RecoveryJournal *journal)
return;
}

// If the block map head will advance, we must flush any block map page
// modified by the entries we are reaping. If the slab journal head will
// advance, we must flush the slab summary update covering the slab journal
// that just released some lock.
journal->reaping = true;
launchFlush(journal->flushVIO, completeReaping, handleFlushError);
PhysicalLayer *layer = vioAsCompletion(journal->flushVIO)->layer;
if (layer->isFlushRequired(layer)) {
/*
* If the block map head will advance, we must flush any block map page
* modified by the entries we are reaping. If the slab journal head will
* advance, we must flush the slab summary update covering the slab journal
* that just released some lock.
*/
journal->reaping = true;
launchFlush(journal->flushVIO, completeReaping, handleFlushError);
return;
}

finishReaping(journal);
}

/**********************************************************************/
Expand Down

0 comments on commit 0aba30f

Please sign in to comment.