recovery: sleep after writing partition and closing it
Another speculative attempt to get everything we write actually stored to the device. Change-Id: Icf40b0741b4c535e55ea34848073a97d90dc0e70
This commit is contained in:
@@ -432,7 +432,7 @@ int WriteToPartition(unsigned char* data, size_t len,
|
|||||||
int attempt;
|
int attempt;
|
||||||
|
|
||||||
for (attempt = 0; attempt < 10; ++attempt) {
|
for (attempt = 0; attempt < 10; ++attempt) {
|
||||||
off_t next_sync = start + (1<<20);
|
size_t next_sync = start + (1<<20);
|
||||||
printf("raw write %s attempt %d start at %d\n", partition, attempt+1, start);
|
printf("raw write %s attempt %d start at %d\n", partition, attempt+1, start);
|
||||||
lseek(fd, start, SEEK_SET);
|
lseek(fd, start, SEEK_SET);
|
||||||
while (start < len) {
|
while (start < len) {
|
||||||
@@ -487,7 +487,7 @@ int WriteToPartition(unsigned char* data, size_t len,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (read_count < to_read) {
|
if ((size_t)read_count < to_read) {
|
||||||
printf("short verify read %s at %d: %d %d %s\n",
|
printf("short verify read %s at %d: %d %d %s\n",
|
||||||
partition, p, read_count, to_read, strerror(errno));
|
partition, p, read_count, to_read, strerror(errno));
|
||||||
}
|
}
|
||||||
@@ -519,6 +519,11 @@ int WriteToPartition(unsigned char* data, size_t len,
|
|||||||
printf("error closing %s (%s)\n", partition, strerror(errno));
|
printf("error closing %s (%s)\n", partition, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
// hack: sync and sleep after closing in hopes of getting
|
||||||
|
// the data actually onto flash.
|
||||||
|
printf("sleeping after close\n");
|
||||||
|
sync();
|
||||||
|
sleep(5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user