blob: 8c5b7d1b16f14f2fe2980acb457f6981eca1969f [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
11using stdplus::fd::ManagedFd;
12
13class 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 * @param[in] managedFd - the file descriptor for the open drive
28 */
29 void writePattern(uint64_t driveSize, ManagedFd& fd);
30
31 /** @brief verifies the uncompressible random pattern is on the drive
32 * and throws errors accordingly.
33 *
34 * @param[in] bytes - Size of the block device
35 * @param[in] managedFd - the file descriptor for the open drive
36 */
37 void verifyPattern(uint64_t driveSize, ManagedFd& fd);
38};