From c211a5f012864bca3ac3def587da63ea11ec3eaa Mon Sep 17 00:00:00 2001 From: Abutalib Aghayev Date: Thu, 17 Jun 2021 13:14:59 -0400 Subject: [PATCH] blk: Add functionality for resetting zones to HM-SMR device. Signed-off-by: Abutalib Aghayev --- src/blk/BlockDevice.h | 3 +++ src/blk/zoned/HMSMRDevice.cc | 8 ++++++++ src/blk/zoned/HMSMRDevice.h | 3 +++ 3 files changed, 14 insertions(+) diff --git a/src/blk/BlockDevice.h b/src/blk/BlockDevice.h index 44ed3de4d8c6..b67312af2f85 100644 --- a/src/blk/BlockDevice.h +++ b/src/blk/BlockDevice.h @@ -199,6 +199,9 @@ public: ceph_assert(is_smr()); return conventional_region_size; } + virtual void reset_zones(const std::set *zones) { + ceph_assert(is_smr()); + } virtual void aio_submit(IOContext *ioc) = 0; diff --git a/src/blk/zoned/HMSMRDevice.cc b/src/blk/zoned/HMSMRDevice.cc index dac61c879e73..61a0d7d0affe 100644 --- a/src/blk/zoned/HMSMRDevice.cc +++ b/src/blk/zoned/HMSMRDevice.cc @@ -412,6 +412,14 @@ void HMSMRDevice::_detect_vdo() return; } +void HMSMRDevice::reset_zones(const std::set *zones) { + for (auto zone_num : *zones) { + if (zbd_reset_zones(zbd_dev, zone_num * zone_size, zone_size) != 0) { + derr << __func__ << " resetting zone failed for zone " << zone_num << dendl; + } + } +} + bool HMSMRDevice::get_thin_utilization(uint64_t *total, uint64_t *avail) const { if (vdo_fd < 0) { diff --git a/src/blk/zoned/HMSMRDevice.h b/src/blk/zoned/HMSMRDevice.h index 30941f2f9c6b..0656a1dfed6f 100644 --- a/src/blk/zoned/HMSMRDevice.h +++ b/src/blk/zoned/HMSMRDevice.h @@ -41,6 +41,7 @@ class HMSMRDevice final : public BlockDevice { string vdo_name; std::string devname; ///< kernel dev name (/sys/block/$devname), if any + int zbd_dev; ceph::mutex debug_lock = ceph::make_mutex("HMSMRDevice::debug_lock"); interval_set debug_inflight; @@ -135,6 +136,8 @@ public: bool is_smr() const final { return true; } + void reset_zones(const std::set *zones) override; + bool get_thin_utilization(uint64_t *total, uint64_t *avail) const final; int read(uint64_t off, uint64_t len, bufferlist *pbl, -- 2.47.3