/* * Copyright (c) 2020 Red Hat, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * * $Id: //eng/vdo-releases/aluminum/src/c++/vdo/base/statusCodes.h#2 $ */ #ifndef STATUS_CODES_H #define STATUS_CODES_H #include "errors.h" enum { UDS_BLOCK_SIZE = UDS_ERROR_CODE_BLOCK_END - UDS_ERROR_CODE_BASE, VDO_BLOCK_START = UDS_ERROR_CODE_BLOCK_END, VDO_BLOCK_END = VDO_BLOCK_START + UDS_BLOCK_SIZE, PRP_BLOCK_START = VDO_BLOCK_END, PRP_BLOCK_END = PRP_BLOCK_START + UDS_BLOCK_SIZE, }; /** * VDO-specific status codes. **/ enum vdoStatusCodes { /** successful result */ VDO_SUCCESS = 0, /** base of all VDO errors */ VDO_STATUS_CODE_BASE = VDO_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, /** unexpected EOF on block read */ VDO_UNEXPECTED_EOF, /** improper or missing configuration option */ VDO_BAD_CONFIGURATION, /** socket opening or binding problem */ VDO_SOCKET_ERROR, /** read or write on non-aligned offset */ VDO_BAD_ALIGNMENT, /** 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, /** the block size is too small */ VDO_BLOCK_SIZE_TOO_SMALL, /** no partition exists with a given id */ VDO_UNKNOWN_PARTITION, /** a partition already exists with a given id */ VDO_PARTITION_EXISTS, /** the VDO is not in read-only mode */ VDO_NOT_READ_ONLY, /** physical block growth of too few blocks */ VDO_INCREMENT_TOO_SMALL, /** incorrect checksum */ VDO_CHECKSUM_MISMATCH, /** the recovery journal is full */ VDO_RECOVERY_JOURNAL_FULL, /** 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 */ 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, /** the extended command is not known */ VDO_UNKNOWN_COMMAND, /** bad extended command parameters */ VDO_COMMAND_ERROR, /** cannot determine sizes to fit */ VDO_CANNOT_DETERMINE_SIZE, /** a block map entry is invalid */ VDO_BAD_MAPPING, /** read cache has no free slots */ VDO_READ_CACHE_BUSY, /** 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_BLOCK_END }; extern const struct errorInfo vdoStatusList[]; /** * Register the VDO status codes if needed. * * @return a success or error code **/ int registerStatusCodes(void); #endif // STATUS_CODES_H