From a03e8ab662559b395380864980bfec7958585a53 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 26 Jun 2019 14:29:25 -0500 Subject: [PATCH] osd: record last_purged_snaps_scrub in superblock Signed-off-by: Sage Weil --- src/osd/OSD.cc | 8 ++++++++ src/osd/osd_types.cc | 3 +++ src/osd/osd_types.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index a2ebb42e303..0165ee18332 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6622,6 +6622,14 @@ int OSD::_do_command( pg->queue_snap_retrim(snap); pg->unlock(); } + ObjectStore::Transaction t; + superblock.last_purged_snaps_scrub = ceph_clock_now(); + write_superblock(t); + int tr = store->queue_transaction(service.meta_ch, std::move(t), nullptr); + ceph_assert(tr == 0); + if (is_active()) { + send_beacon(ceph::coarse_mono_clock::now()); + } } else { ss << "unrecognized command '" << prefix << "'"; r = -EINVAL; diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 41279e0a3e4..6e7135eae4a 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -5215,6 +5215,7 @@ void OSDSuperblock::encode(ceph::buffer::list &bl) const encode((epoch_t)0, bl); // epoch_t last_epoch_marked_full encode((uint32_t)0, bl); // map pool_last_epoch_marked_full encode(purged_snaps_last, bl); + encode(last_purged_snaps_scrub, bl); ENCODE_FINISH(bl); } @@ -5250,6 +5251,7 @@ void OSDSuperblock::decode(ceph::buffer::list::const_iterator &bl) } if (struct_v >= 9) { decode(purged_snaps_last, bl); + decode(last_purged_snaps_scrub, bl); } else { purged_snaps_last = 0; } @@ -5271,6 +5273,7 @@ void OSDSuperblock::dump(Formatter *f) const f->dump_int("clean_thru", clean_thru); f->dump_int("last_epoch_mounted", mounted); f->dump_unsigned("purged_snaps_last", purged_snaps_last); + f->dump_stream("last_purged_snaps_scrub") << last_purged_snaps_scrub; } void OSDSuperblock::generate_test_instances(list& o) diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index a1f321b9508..a9426df8ad1 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -4995,6 +4995,7 @@ public: epoch_t clean_thru = 0; // epoch i was active and clean thru epoch_t purged_snaps_last = 0; + utime_t last_purged_snaps_scrub; void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); -- 2.39.5