Skip to content

Commit df5ebd5

Browse files
author
Vlad Kuznecov
committed
Revert "Remove OldHashSector in PDisk (ydb-platform#6465)"
This reverts commit 11ed7b0.
1 parent 6ee3d1c commit df5ebd5

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

ydb/core/blobstorage/pdisk/blobstorage_pdisk_crypto.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,19 @@ namespace NPDisk {
1212

1313
class TPDiskHashCalculator : public THashCalculator {
1414
public:
15+
ui64 OldHashSector(const ui64 sectorOffset, const ui64 magic, const ui8 *sector,
16+
const ui32 sectorSize) {
17+
REQUEST_VALGRIND_CHECK_MEM_IS_DEFINED(&sectorOffset, sizeof sectorOffset);
18+
REQUEST_VALGRIND_CHECK_MEM_IS_DEFINED(&magic, sizeof magic);
19+
REQUEST_VALGRIND_CHECK_MEM_IS_DEFINED(sector, sectorSize - sizeof(ui64));
20+
21+
THashCalculator::Clear();
22+
THashCalculator::Hash(&sectorOffset, sizeof sectorOffset);
23+
THashCalculator::Hash(&magic, sizeof magic);
24+
THashCalculator::Hash(sector, sectorSize - sizeof(ui64));
25+
return THashCalculator::GetHashResult();
26+
}
27+
1528
template<class THasher>
1629
ui64 T1ha0HashSector(const ui64 sectorOffset, const ui64 magic, const ui8 *sector,
1730
const ui32 sectorSize) {
@@ -31,7 +44,11 @@ class TPDiskHashCalculator : public THashCalculator {
3144

3245
bool CheckSectorHash(const ui64 sectorOffset, const ui64 magic, const ui8 *sector,
3346
const ui32 sectorSize, const ui64 sectorHash) {
34-
return sectorHash == T1ha0HashSector<TT1ha0NoAvxHasher>(sectorOffset, magic, sector, sectorSize);
47+
// On production servers may be two versions.
48+
// If by default used OldHash version, then use it first
49+
// If by default used T1ha0NoAvx version, then use it
50+
return sectorHash == T1ha0HashSector<TT1ha0NoAvxHasher>(sectorOffset, magic, sector, sectorSize)
51+
|| sectorHash == OldHashSector(sectorOffset, magic, sector, sectorSize);
3552
}
3653
};
3754

ydb/core/blobstorage/pdisk/blobstorage_pdisk_sectorrestorator.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ void TSectorRestorator::Restore(ui8 *source, const ui64 offset, const ui64 magic
5151
(ErasureDataParts, ErasureDataParts),
5252
(Sector, i),
5353
(ReadHash, sectorFooter->Hash),
54+
(CalculatedOldHash, hasher.OldHashSector(sectorOffset, magic, sectorData, Format.SectorSize)),
5455
(CalculatedT1ha0NoAvxHash, hasher.T1ha0HashSector<TT1ha0NoAvxHasher>(sectorOffset, magic, sectorData, Format.SectorSize)),
5556
(SectorOffset, sectorOffset),
5657
(chunkIdx, sectorOffset / (ui64)Format.ChunkSize),

ydb/core/blobstorage/pdisk/blobstorage_pdisk_util_ut.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,14 +356,17 @@ void TestPayloadOffset(ui64 firstSector, ui64 lastSector, ui64 currentSector, ui
356356
const ui64 magic = 0x123951924;
357357
const ui64 offset = format.SectorSize * 17;
358358
ui64 nonce = 1;
359-
for (ui32 i = 1; i < sectors.Size(); ++i) {
359+
for (ui32 i = 0; i < sectors.Size(); ++i) {
360360
memset(sectors[i].Begin(), 13, sectors[i].Size());
361361
sectors[i].SetCanary();
362362
auto *footer = sectors[i].GetDataFooter();
363363
footer->Version = PDISK_DATA_VERSION;
364364
footer->Nonce = nonce++;
365365
NPDisk::TPDiskHashCalculator hasher;
366366
switch (i) {
367+
case 0:
368+
footer->Hash = hasher.OldHashSector(offset, magic, sectors[i].Begin(), sectors[i].Size());
369+
break;
367370
case 1:
368371
footer->Hash = hasher.T1ha0HashSector<TT1ha0NoAvxHasher>(offset, magic, sectors[i].Begin(), sectors[i].Size());
369372
break;

0 commit comments

Comments
 (0)