[Gptfdisk-general] [PATCH] Fix problem resizing RAID disks
Brought to you by:
srs5694
From: Frediano Z. <fre...@ci...> - 2014-01-27 11:20:39
|
This patch fix a nasty problem using -Z option in some cases if raid type is change. The reason is that usually when you change RAID type only first part get cleaned so you end up with GPT backup copy (at end) still present but at different location. Imaging you have a RAID0 disk with 2 disk so you have clusters alternated with last cluster ending at disk #2 containing the backup GPT. You destroy the RAID and create another RAID0 with 4 disks. If disk #2 now is disk #4 (last) of new RAID you end up with last cluster containing the old GPT. However the LBA information still point to old location which now point at the middle of the disk while protective MBR and main GPT cleared. In this situation doing a --zap-all command gdisk try to load GPTs headers finding the backup. Then it try to zero them using LBA informations just read so it clear some sectors in the middle of the disk. The result if that disk is not cleared correctly. The patch fix LBA addresses before writing zeroes clearing correct locations. Signed-off-by: Frediano Ziglio <fre...@ci...> --- gpt.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/gpt.cc b/gpt.cc index fa7b661..3244cc9 100644 --- a/gpt.cc +++ b/gpt.cc @@ -1314,6 +1314,7 @@ int GPTData::DestroyGPT(void) { uint8_t* emptyTable; memset(blankSector, 0, sizeof(blankSector)); + ClearGPTData(); if (myDisk.OpenForWrite()) { if (!myDisk.Seek(mainHeader.currentLBA)) -- 1.7.10.4 |