| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright 2023 Red Hat | |
| */ | |
| #ifndef VDO_STATUS_CODES_H | |
| #define VDO_STATUS_CODES_H | |
| #include "errors.h" | |
| enum { | |
| UDS_ERRORS_BLOCK_SIZE = UDS_ERROR_CODE_BLOCK_END - UDS_ERROR_CODE_BASE, | |
| VDO_ERRORS_BLOCK_START = UDS_ERROR_CODE_BLOCK_END, | |
| VDO_ERRORS_BLOCK_END = VDO_ERRORS_BLOCK_START + UDS_ERRORS_BLOCK_SIZE, | |
| }; | |
| /* VDO-specific status codes. */ | |
| enum vdo_status_codes { | |
| /* base of all VDO errors */ | |
| VDO_STATUS_CODE_BASE = VDO_ERRORS_BLOCK_START, | |
| /* we haven't written this yet */ | |
| VDO_NOT_IMPLEMENTED = VDO_STATUS_CODE_BASE, | |
| /* input out of range */ | |
| VDO_OUT_OF_RANGE, | |
| /* an invalid reference count would result */ | |
| VDO_REF_COUNT_INVALID, | |
| /* a free block could not be allocated */ | |
| VDO_NO_SPACE, | |
| /* improper or missing configuration option */ | |
| VDO_BAD_CONFIGURATION, | |
| /* prior operation still in progress */ | |
| VDO_COMPONENT_BUSY, | |
| /* page contents incorrect or corrupt data */ | |
| VDO_BAD_PAGE, | |
| /* unsupported version of some component */ | |
| VDO_UNSUPPORTED_VERSION, | |
| /* component id mismatch in decoder */ | |
| VDO_INCORRECT_COMPONENT, | |
| /* parameters have conflicting values */ | |
| VDO_PARAMETER_MISMATCH, | |
| /* no partition exists with a given id */ | |
| VDO_UNKNOWN_PARTITION, | |
| /* a partition already exists with a given id */ | |
| VDO_PARTITION_EXISTS, | |
| /* physical block growth of too few blocks */ | |
| VDO_INCREMENT_TOO_SMALL, | |
| /* incorrect checksum */ | |
| VDO_CHECKSUM_MISMATCH, | |
| /* a lock is held incorrectly */ | |
| VDO_LOCK_ERROR, | |
| /* the VDO is in read-only mode */ | |
| VDO_READ_ONLY, | |
| /* the VDO is shutting down */ | |
| VDO_SHUTTING_DOWN, | |
| /* the recovery journal has corrupt entries or corrupt metadata */ | |
| VDO_CORRUPT_JOURNAL, | |
| /* exceeds maximum number of slabs supported */ | |
| VDO_TOO_MANY_SLABS, | |
| /* a compressed block fragment is invalid */ | |
| VDO_INVALID_FRAGMENT, | |
| /* action is unsupported while rebuilding */ | |
| VDO_RETRY_AFTER_REBUILD, | |
| /* a block map entry is invalid */ | |
| VDO_BAD_MAPPING, | |
| /* bio_add_page failed */ | |
| VDO_BIO_CREATION_FAILED, | |
| /* bad magic number */ | |
| VDO_BAD_MAGIC, | |
| /* bad nonce */ | |
| VDO_BAD_NONCE, | |
| /* sequence number overflow */ | |
| VDO_JOURNAL_OVERFLOW, | |
| /* the VDO is not in a state to perform an admin operation */ | |
| VDO_INVALID_ADMIN_STATE, | |
| /* one more than last error code */ | |
| VDO_STATUS_CODE_LAST, | |
| VDO_STATUS_CODE_BLOCK_END = VDO_ERRORS_BLOCK_END | |
| }; | |
| extern const struct error_info vdo_status_list[]; | |
| int vdo_register_status_codes(void); | |
| int vdo_status_to_errno(int error); | |
| #endif /* VDO_STATUS_CODES_H */ |