[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH 9/9] ata: Bei Fehlern mehrmals probieren
From: Antoine Kaufmann <toni@xxxxxxxxxx>
! ata: Wenn wir bei Lese-/Schreibfehlern mehr als einmal probieren
funktioniert das ganze auch auf echter Hardware etwas zuverlaessiger.
Signed-off-by: Antoine Kaufmann <toni@xxxxxxxxxx>
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/cdi/ata/ata.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/modules/cdi/ata/ata.c b/src/modules/cdi/ata/ata.c
index a2ab78f..262440a 100644
--- a/src/modules/cdi/ata/ata.c
+++ b/src/modules/cdi/ata/ata.c
@@ -121,6 +121,7 @@ static int ata_drv_rw_sectors(struct ata_device* dev, int direction,
void* current_buffer = buffer;
uint64_t lba = start;
int max_count;
+ int again = 2;
// Anzahl der Sektoren die noch uebrig sind
size_t count_left = count;
@@ -192,6 +193,10 @@ static int ata_drv_rw_sectors(struct ata_device* dev, int direction,
// Request ausfuehren
if (!ata_request(&request)) {
+ if (again) {
+ again--;
+ continue;
+ }
result = 0;
break;
}
@@ -200,6 +205,7 @@ static int ata_drv_rw_sectors(struct ata_device* dev, int direction,
current_buffer += current_count * ATA_SECTOR_SIZE;
count_left -= current_count;
lba += current_count;
+ again = 2;
}
return result;
--
1.6.0.2