]>
git.proxmox.com Git - ceph.git/blob - ceph/src/librbd/crypto/CryptoImageDispatch.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "librbd/crypto/CryptoImageDispatch.h"
9 CryptoImageDispatch::CryptoImageDispatch(
10 uint64_t data_offset
) : m_data_offset(data_offset
) {
13 void CryptoImageDispatch::remap_to_physical(io::Extents
& image_extents
,
16 case io::ImageArea::DATA
:
17 for (auto& [off
, _
] : image_extents
) {
21 case io::ImageArea::CRYPTO_HEADER
:
29 io::ImageArea
CryptoImageDispatch::remap_to_logical(
30 io::Extents
& image_extents
) {
31 bool saw_data
= false;
32 bool saw_crypto_header
= false;
33 for (auto& [off
, _
] : image_extents
) {
34 if (off
>= m_data_offset
) {
38 saw_crypto_header
= true;
41 if (saw_crypto_header
) {
42 ceph_assert(!saw_data
);
43 return io::ImageArea::CRYPTO_HEADER
;
45 return io::ImageArea::DATA
;