xref: /openbmc/estoraged/include/pattern.hpp (revision 0c2808f0)
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 namespace estoraged
12 {
13 using stdplus::fd::ManagedFd;
14 
15 class Pattern : public Erase
16 {
17   public:
18     /** @brief Creates a pattern erase object.
19      *
20      *  @param[in] inDevPath - the linux device path for the block device.
21      */
22     Pattern(std::string_view inDevPath) : Erase(inDevPath)
23     {}
24 
25     /** @brief writes an uncompressible random pattern to the drive
26      * and throws errors accordingly.
27      *
28      *  @param[in] bytes - Size of the block device
29      */
30     void writePattern(uint64_t driveSize);
31 
32     /** @brief verifies the uncompressible random pattern is on the drive
33      * and throws errors accordingly.
34      *
35      *  @param[in] bytes - Size of the block device
36      */
37     void verifyPattern(uint64_t driveSize);
38 };
39 
40 } // namespace estoraged
41