metadatalogprotocol.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_METADATALOGPROTOCOL_H
  3. #define NETDATA_METADATALOGPROTOCOL_H
  4. #include "../rrddiskprotocol.h"
  5. #define RRDENG_METALOG_MAGIC "netdata-metadata-log"
  6. #define RRDENG_METALOG_VER (1)
  7. #define RRDENG_METALOG_SB_PADDING_SZ (RRDENG_BLOCK_SIZE - (RRDENG_MAGIC_SZ + sizeof(uint16_t)))
  8. /*
  9. * Metadata log persistent super-block
  10. */
  11. struct rrdeng_metalog_sb {
  12. char magic_number[RRDENG_MAGIC_SZ];
  13. uint16_t version;
  14. uint8_t padding[RRDENG_METALOG_SB_PADDING_SZ];
  15. } __attribute__ ((packed));
  16. /*
  17. * Metadata log record types
  18. */
  19. #define METALOG_STORE_PADDING (0)
  20. #define METALOG_CREATE_OBJECT (1)
  21. #define METALOG_DELETE_OBJECT (2)
  22. #define METALOG_OTHER (3) /* reserved */
  23. /*
  24. * Metadata log record header
  25. */
  26. struct rrdeng_metalog_record_header {
  27. /* when set to METALOG_STORE_PADDING jump to start of next block */
  28. uint8_t type;
  29. uint16_t header_length;
  30. uint32_t payload_length;
  31. /******************************************************
  32. * No fields above this point can ever change. *
  33. ******************************************************
  34. * All fields below this point are subject to change. *
  35. ******************************************************/
  36. } __attribute__ ((packed));
  37. /*
  38. * Metadata log record trailer
  39. */
  40. struct rrdeng_metalog_record_trailer {
  41. uint8_t checksum[CHECKSUM_SZ]; /* CRC32 */
  42. } __attribute__ ((packed));
  43. #endif /* NETDATA_METADATALOGPROTOCOL_H */