Line data Source code
1 : #ifndef HEADER_fd_src_discof_backup_fd_snapmk_tile_h 2 : #define HEADER_fd_src_discof_backup_fd_snapmk_tile_h 3 : 4 : /* fd_snapmk_tile.h specifies the snapmk tile ABI. 5 : The snapmk tile is the IPC entrypoint for snapshot production. */ 6 : 7 : #include "fd_backup.h" 8 : #include "../../tango/fd_tango_base.h" 9 : 10 : /* snapmk_out ABI 11 : 12 : snapmk_out is a reliable tango link with dcache alloc policy. 13 : mcache descriptor fields as follows: 14 : - seq: sequence number 15 : - sig: payload type (FD_SNAPMK_MSG_*) 16 : - chunk: compressed payload pointer (fd_chunk_to_laddr wksp-relative) 17 : - sz: payload size 18 : - tspub: compressed tickcount event timestamp 19 : Other fields are reserved for future use. 20 : 21 : Consumers can replay found/created/deleted messages to reconstruct a 22 : live view of all available snapshots on the file system.*/ 23 : 24 : /* FD_SNAPMK_MSG_* give message types */ 25 : 26 0 : #define FD_SNAPMK_MSG_FOUND 1 /* fd_snapmk_msg_found_t */ 27 0 : #define FD_SNAPMK_MSG_CREATED 2 /* fd_snapmk_msg_created_t */ 28 0 : #define FD_SNAPMK_MSG_DELETED 3 /* fd_snapmk_msg_deleted_t */ 29 0 : #define FD_SNAPMK_MSG_STARTED 4 /* fd_snapmk_msg_started_t */ 30 0 : #define FD_SNAPMK_MSG_FAILED 5 /* fd_snapmk_msg_failed_t */ 31 : 32 : /* fd_snapmk_msg_found_t signals that a pre-existing snapshot was found 33 : on the file system. That snapshot comes from a previous run or was 34 : just downloaded by the snapshot loading pipeline. 35 : 36 : A burst of these messages is also created after startup (once the 37 : snapshot loading pipeline finishes). */ 38 : 39 : struct fd_snapmk_msg_found { 40 : ulong slot; /* snapshot slot */ 41 : ulong base_slot; /* ULONG_MAX if full snapshot */ 42 : ulong sz; /* snapshot file size */ 43 : uint pool_idx; /* FD_SNAP_FD( pool_idx ) -> snap file descriptor */ 44 : uint reserved; 45 : char name[ FD_SNAP_NAME_MAX ]; 46 : long fs_timestamp; /* unix nanosecond timestamp from file (LONG_MAX if unknown) */ 47 : }; 48 : 49 : typedef struct fd_snapmk_msg_found fd_snapmk_msg_found_t; 50 : 51 : /* fd_snapmk_msg_created_t signals that a new snapshot was just produced 52 : and is available on the file system. */ 53 : 54 : struct fd_snapmk_msg_created { 55 : ulong slot; /* snapshot slot */ 56 : ulong base_slot; /* ULONG_MAX if full snapshot */ 57 : ulong sz; /* snapshot file size */ 58 : uint pool_idx; /* FD_SNAP_FD( pool_idx ) -> snap file descriptor */ 59 : uint reserved; 60 : char name[ FD_SNAP_NAME_MAX ]; 61 : }; 62 : 63 : typedef struct fd_snapmk_msg_created fd_snapmk_msg_created_t; 64 : 65 : /* fd_snapmk_msg_deleted_t signals that a snapshot is about to be 66 : deleted. */ 67 : 68 : struct fd_snapmk_msg_deleted { 69 : ulong slot; 70 : ulong base_slot; /* ULONG_MAX if full snapshot */ 71 : uint pool_idx; /* FD_SNAP_FD( pool_idx ) -> snap file descriptor */ 72 : uint reserved1; 73 : char name[ FD_SNAP_NAME_MAX ]; 74 : }; 75 : 76 : typedef struct fd_snapmk_msg_deleted fd_snapmk_msg_deleted_t; 77 : 78 : /* fd_snapmk_msg_started_t signals that the snapshot production pipeline 79 : has started. Will eventually be followed by a created or failed msg. */ 80 : 81 : struct fd_snapmk_msg_started { 82 : ulong slot; 83 : ulong base_slot; /* ULONG_MAX if full snapshot */ 84 : uint pool_idx; /* FD_SNAP_FD( pool_idx ) -> snap file descriptor */ 85 : }; 86 : 87 : typedef struct fd_snapmk_msg_started fd_snapmk_msg_started_t; 88 : 89 : /* fd_snapmk_msg_failed_t signals that snapshot production failed. 90 : Currently, there is only one failure reason: too many accounts 91 : changed since the full snapshot to fit in the incremental snap. */ 92 : 93 : struct fd_snapmk_msg_failed { 94 : ulong slot; 95 : ulong base_slot; /* ULONG_MAX if full snapshot */ 96 : uint reserved; 97 : }; 98 : 99 : typedef struct fd_snapmk_msg_failed fd_snapmk_msg_failed_t; 100 : 101 : /* fd_snapmk_msg_t is the data payload behind the fd_frag_meta_t::chunk 102 : compressed offset. */ 103 : 104 : union fd_snapmk_msg { 105 : fd_snapmk_msg_found_t found; 106 : fd_snapmk_msg_created_t created; 107 : fd_snapmk_msg_deleted_t deleted; 108 : fd_snapmk_msg_started_t started; 109 : fd_snapmk_msg_failed_t failed; 110 : }; 111 : 112 : typedef union fd_snapmk_msg fd_snapmk_msg_t; 113 : 114 : #endif /* HEADER_fd_src_discof_backup_fd_snapmk_tile_h */