assert(need != NULL);
uint32_t entry_size = 0;
- uint64_t start_ptr = 0;
uint64_t entry_sentinel = 0;
bufferlist::iterator p = read_buf.begin();
// Do we have enough data to decode an entry prefix, payload and suffix?
if (format >= JOURNAL_FORMAT_RESILIENT) {
- *need = sizeof(entry_size) + sizeof(entry_sentinel) + entry_size + sizeof(start_ptr);
+ *need = JOURNAL_ENVELOPE_RESILIENT + entry_size;
} else {
- *need = sizeof(entry_size) + entry_size;
+ *need = JOURNAL_ENVELOPE_LEGACY + entry_size;
}
if (read_buf.length() >= *need) {
return true; // No more bytes needed
size_t raw_length;
if (format >= JOURNAL_FORMAT_RESILIENT) {
- raw_length = sizeof(entry_size) + sizeof(entry_sentinel) + entry_size + sizeof(*start_ptr);
+ raw_length = JOURNAL_ENVELOPE_RESILIENT + entry_size;
assert(entry_sentinel == sentinel);
} else {
- raw_length = sizeof(entry_size) + entry_size;
+ raw_length = JOURNAL_ENVELOPE_LEGACY + entry_size;
}
assert(from.length() >= raw_length);
assert(entry_size != 0);
}
if (format >= JOURNAL_FORMAT_RESILIENT) {
- return sizeof(sentinel) + sizeof(entry_size) + entry_size + sizeof(start_ptr);
+ return JOURNAL_ENVELOPE_RESILIENT + entry_size;
} else {
- return sizeof(entry_size) + entry_size;
+ return JOURNAL_ENVELOPE_LEGACY + entry_size;
}
}
class PerfCounters;
typedef __u8 stream_format_t;
+
+// Legacy envelope is leading uint32_t size
#define JOURNAL_FORMAT_LEGACY 0
+#define JOURNAL_ENVELOPE_LEGACY (sizeof(uint32_t))
+
+// Resilient envelope is leading uint64_t sentinel, uint32_t size, trailing uint64_t start_ptr
#define JOURNAL_FORMAT_RESILIENT 1
+#define JOURNAL_ENVELOPE_RESILIENT (sizeof(uint32_t) + sizeof(uint64_t) + sizeof(uint64_t))
/**