static void resetLogBuffer(/*out*/JSectHeader& h, AlignedBuilder& bb) { bb.reset(); h.setSectionLen(0xffffffff); // total length, will fill in later h.seqNumber = getLastDataFileFlushTime(); h.fileId = j.curFileId(); }
/** we will build an output buffer ourself and then use O_DIRECT we could be in read lock for this caller handles locking @return partially populated sectheader and _ab set */ static void _PREPLOGBUFFER(JSectHeader& h, AlignedBuilder& bb) { // Add the JSectHeader // Invalidate the total length, we will fill it in later. h.setSectionLen(0xffffffff); h.seqNumber = getLastDataFileFlushTime(); h.fileId = j.curFileId(); // Ops other than basic writes (DurOp's) go first const std::vector<std::shared_ptr<DurOp>>& durOps = commitJob.ops(); for (std::vector<std::shared_ptr<DurOp>>::const_iterator i = durOps.begin(); i != durOps.end(); i++) { (*i)->serialize(bb); } // Write intents const std::vector<WriteIntent>& intents = commitJob.getIntentsSorted(); if (!intents.empty()) { prepBasicWrites(bb, intents); } }