blob: 69301e7a90f229830235004a37f7f26e70591c55 [file] [log] [blame]
John Edward Broadbent7f2ab642021-11-11 21:00:38 -08001#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
John Edward Broadbentd3bfa7b2022-01-13 17:41:32 -080011namespace estoraged
12{
John Edward Broadbent7f2ab642021-11-11 21:00:38 -080013using stdplus::fd::ManagedFd;
14
15class 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
John Edward Broadbent7f2ab642021-11-11 21:00:38 -080029 */
John Edward Broadbent69786762022-01-21 14:16:23 -080030 void writePattern(uint64_t driveSize);
John Edward Broadbent7f2ab642021-11-11 21:00:38 -080031
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
John Edward Broadbent7f2ab642021-11-11 21:00:38 -080036 */
John Edward Broadbent69786762022-01-21 14:16:23 -080037 void verifyPattern(uint64_t driveSize);
John Edward Broadbent7f2ab642021-11-11 21:00:38 -080038};
John Edward Broadbentd3bfa7b2022-01-13 17:41:32 -080039
40} // namespace estoraged