xref: /openbmc/estoraged/include/verifyDriveGeometry.hpp (revision a6e3b99df73312c465b4b174b167bb785e886a71)
1e6ffe704SJohn Edward Broadbent #pragma once
2e6ffe704SJohn Edward Broadbent 
3e6ffe704SJohn Edward Broadbent #include "erase.hpp"
4*a6e3b99dSJohn Edward Broadbent #include "util.hpp"
5e6ffe704SJohn Edward Broadbent 
6e6ffe704SJohn Edward Broadbent #include <string_view>
7e6ffe704SJohn Edward Broadbent 
8d3bfa7bbSJohn Edward Broadbent namespace estoraged
9d3bfa7bbSJohn Edward Broadbent {
10d3bfa7bbSJohn Edward Broadbent 
11e6ffe704SJohn Edward Broadbent class VerifyDriveGeometry : public Erase
12e6ffe704SJohn Edward Broadbent {
13e6ffe704SJohn Edward Broadbent   public:
14e6ffe704SJohn Edward Broadbent     /** @brief Creates a verifyDriveGeomentry erase object.
15e6ffe704SJohn Edward Broadbent      *
16e6ffe704SJohn Edward Broadbent      *  @param[in] inDevPath - the linux device path for the block device.
17e6ffe704SJohn Edward Broadbent      */
18e6ffe704SJohn Edward Broadbent     VerifyDriveGeometry(std::string_view inDevPath) : Erase(inDevPath)
19e6ffe704SJohn Edward Broadbent     {}
20e6ffe704SJohn Edward Broadbent 
21e6ffe704SJohn Edward Broadbent     /** @brief Test if input is in between the max and min expected sizes,
22e6ffe704SJohn Edward Broadbent      * and throws errors accordingly.
23e6ffe704SJohn Edward Broadbent      *
24e6ffe704SJohn Edward Broadbent      *  @param[in] bytes - Size of the block device
25e6ffe704SJohn Edward Broadbent      */
26*a6e3b99dSJohn Edward Broadbent     void geometryOkay()
27*a6e3b99dSJohn Edward Broadbent     {
28*a6e3b99dSJohn Edward Broadbent         geometryOkay(util::Util::findSizeOfBlockDevice(devPath));
29*a6e3b99dSJohn Edward Broadbent     }
30e6ffe704SJohn Edward Broadbent     void geometryOkay(uint64_t bytes);
31e6ffe704SJohn Edward Broadbent };
32d3bfa7bbSJohn Edward Broadbent 
33d3bfa7bbSJohn Edward Broadbent } // namespace estoraged
34