MCPcopy Index your code
hub / github.com/plexdrive/plexdrive / checkJournal

Method checkJournal

chunk/storage.go:178–208  ·  view source on GitHub ↗

checkJournal verifies the journal header

(journal []byte, skipMaxChunks bool)

Source from the content-addressed store, hash-verified

176
177// checkJournal verifies the journal header
178func (s *Storage) checkJournal(journal []byte, skipMaxChunks bool) bool {
179 h := (*journalHeader)(unsafe.Pointer(&journal[0]))
180 // check magic bytes / endianess mismatch ('PD' vs 'DP')
181 if h.magic != journalMagic {
182 Log.Debugf("Journal magic mismatch: %v != %v", h.magic, journalMagic)
183 return false
184 }
185 checksum := crc32.Checksum(journal[:12], crc32Table)
186 if h.checksum != checksum {
187 Log.Debugf("Journal checksum mismatch: %08X != %08X", h.checksum, checksum)
188 return false
189 }
190 if h.version != journalVersion {
191 Log.Debugf("Journal version mismatch: %v != %v", h.version, journalVersion)
192 return false
193 }
194 if h.headerSize != uint8(headerSize) {
195 Log.Debugf("Journal chunk header size mismatch: %v != %v", h.headerSize, headerSize)
196 return false
197 }
198 if !skipMaxChunks && h.maxChunks != uint32(s.MaxChunks) {
199 Log.Debugf("Journal max chunks mismatch: %v != %v", h.maxChunks, s.MaxChunks)
200 return false
201 }
202 if h.chunkSize != uint32(s.ChunkSize) {
203 Log.Debugf("Journal chunk size mismatch: %v != %v", h.chunkSize, s.ChunkSize)
204 return false
205 }
206 Log.Debug("Journal is valid")
207 return true
208}
209
210// initJournal initializes the journal
211func (s *Storage) initJournal(journal []byte) {

Callers 2

NewStorageFunction · 0.95
relocateJournalMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected