From b027a1039f8cb71c86e7fc246f25c64c373e2f81 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Wed, 17 Apr 2019 12:15:46 +0100 Subject: [PATCH] [thin-provisioning] Add a new constructor for the metadata class This one takes a superblock. Used when repairing. --- thin-provisioning/metadata.cc | 7 +++++++ thin-provisioning/metadata.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/thin-provisioning/metadata.cc b/thin-provisioning/metadata.cc index 7f91b51..fa26cfa 100644 --- a/thin-provisioning/metadata.cc +++ b/thin-provisioning/metadata.cc @@ -134,6 +134,13 @@ metadata::metadata(block_manager<>::ptr bm, open_btrees(); } +metadata::metadata(block_manager<>::ptr bm, superblock_detail::superblock const &sb) +{ + tm_ = open_tm(bm, SUPERBLOCK_LOCATION); + sb_ = sb; + open_btrees(); +} + void metadata::commit() { diff --git a/thin-provisioning/metadata.h b/thin-provisioning/metadata.h index 0af2e38..bafd933 100644 --- a/thin-provisioning/metadata.h +++ b/thin-provisioning/metadata.h @@ -78,6 +78,9 @@ namespace thin_provisioning { metadata(block_manager<>::ptr, boost::optional metadata_snap); // (ii) and (iii) + // This is used by repair, when we rebuild the superblock + metadata(block_manager<>::ptr bm, superblock_detail::superblock const &sb); + void commit();