1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright 2023 Red Hat 4 */ 5 6 #ifndef VDO_STATUS_CODES_H 7 #define VDO_STATUS_CODES_H 8 9 #include "errors.h" 10 11 enum { 12 UDS_ERRORS_BLOCK_SIZE = UDS_ERROR_CODE_BLOCK_END - UDS_ERROR_CODE_BASE, 13 VDO_ERRORS_BLOCK_START = UDS_ERROR_CODE_BLOCK_END, 14 VDO_ERRORS_BLOCK_END = VDO_ERRORS_BLOCK_START + UDS_ERRORS_BLOCK_SIZE, 15 }; 16 17 /* VDO-specific status codes. */ 18 enum vdo_status_codes { 19 /* base of all VDO errors */ 20 VDO_STATUS_CODE_BASE = VDO_ERRORS_BLOCK_START, 21 /* we haven't written this yet */ 22 VDO_NOT_IMPLEMENTED = VDO_STATUS_CODE_BASE, 23 /* input out of range */ 24 VDO_OUT_OF_RANGE, 25 /* an invalid reference count would result */ 26 VDO_REF_COUNT_INVALID, 27 /* a free block could not be allocated */ 28 VDO_NO_SPACE, 29 /* improper or missing configuration option */ 30 VDO_BAD_CONFIGURATION, 31 /* prior operation still in progress */ 32 VDO_COMPONENT_BUSY, 33 /* page contents incorrect or corrupt data */ 34 VDO_BAD_PAGE, 35 /* unsupported version of some component */ 36 VDO_UNSUPPORTED_VERSION, 37 /* component id mismatch in decoder */ 38 VDO_INCORRECT_COMPONENT, 39 /* parameters have conflicting values */ 40 VDO_PARAMETER_MISMATCH, 41 /* no partition exists with a given id */ 42 VDO_UNKNOWN_PARTITION, 43 /* a partition already exists with a given id */ 44 VDO_PARTITION_EXISTS, 45 /* physical block growth of too few blocks */ 46 VDO_INCREMENT_TOO_SMALL, 47 /* incorrect checksum */ 48 VDO_CHECKSUM_MISMATCH, 49 /* a lock is held incorrectly */ 50 VDO_LOCK_ERROR, 51 /* the VDO is in read-only mode */ 52 VDO_READ_ONLY, 53 /* the VDO is shutting down */ 54 VDO_SHUTTING_DOWN, 55 /* the recovery journal has corrupt entries or corrupt metadata */ 56 VDO_CORRUPT_JOURNAL, 57 /* exceeds maximum number of slabs supported */ 58 VDO_TOO_MANY_SLABS, 59 /* a compressed block fragment is invalid */ 60 VDO_INVALID_FRAGMENT, 61 /* action is unsupported while rebuilding */ 62 VDO_RETRY_AFTER_REBUILD, 63 /* a block map entry is invalid */ 64 VDO_BAD_MAPPING, 65 /* bio_add_page failed */ 66 VDO_BIO_CREATION_FAILED, 67 /* bad magic number */ 68 VDO_BAD_MAGIC, 69 /* bad nonce */ 70 VDO_BAD_NONCE, 71 /* sequence number overflow */ 72 VDO_JOURNAL_OVERFLOW, 73 /* the VDO is not in a state to perform an admin operation */ 74 VDO_INVALID_ADMIN_STATE, 75 /* one more than last error code */ 76 VDO_STATUS_CODE_LAST, 77 VDO_STATUS_CODE_BLOCK_END = VDO_ERRORS_BLOCK_END 78 }; 79 80 extern const struct error_info vdo_status_list[]; 81 82 int vdo_register_status_codes(void); 83 84 int vdo_status_to_errno(int error); 85 86 #endif /* VDO_STATUS_CODES_H */ 87