xref: /openbmc/estoraged/include/pattern.hpp (revision 69786761)
1 #pragma once
2 
3 #include "erase.hpp"
4 
5 #include <stdplus/fd/create.hpp>
6 #include <stdplus/fd/managed.hpp>
7 
8 #include <span>
9 #include <string>
10 
11 using stdplus::fd::ManagedFd;
12 
13 class Pattern : public Erase
14 {
15   public:
16     /** @brief Creates a pattern erase object.
17      *
18      *  @param[in] inDevPath - the linux device path for the block device.
19      */
20     Pattern(std::string_view inDevPath) : Erase(inDevPath)
21     {}
22 
23     /** @brief writes an uncompressible random pattern to the drive
24      * and throws errors accordingly.
25      *
26      *  @param[in] bytes - Size of the block device
27      */
28     void writePattern(uint64_t driveSize);
29 
30     /** @brief verifies the uncompressible random pattern is on the drive
31      * and throws errors accordingly.
32      *
33      *  @param[in] bytes - Size of the block device
34      */
35     void verifyPattern(uint64_t driveSize);
36 };
37