recovery: remove O_DIRECT, use O_SYNC only
O_DIRECT writes fail with EINVAL due to alignment issues. Change-Id: If8cf38a636313e4f4b4e61e66287dc903c473e5b
This commit is contained in:
@@ -424,7 +424,7 @@ int WriteToPartition(unsigned char* data, size_t len,
|
|||||||
{
|
{
|
||||||
size_t start = 0;
|
size_t start = 0;
|
||||||
int success = 0;
|
int success = 0;
|
||||||
int fd = open(partition, O_RDWR | O_DIRECT | O_SYNC);
|
int fd = open(partition, O_RDWR | O_SYNC);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
printf("failed to open %s: %s\n", partition, strerror(errno));
|
printf("failed to open %s: %s\n", partition, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
@@ -433,7 +433,7 @@ int WriteToPartition(unsigned char* data, size_t len,
|
|||||||
|
|
||||||
for (attempt = 0; attempt < 10; ++attempt) {
|
for (attempt = 0; attempt < 10; ++attempt) {
|
||||||
size_t next_sync = start + (1<<20);
|
size_t next_sync = start + (1<<20);
|
||||||
printf("raw O_DIRECT write %s attempt %d start at %d\n", partition, attempt+1, start);
|
printf("raw O_SYNC 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) {
|
||||||
size_t to_write = len - start;
|
size_t to_write = len - start;
|
||||||
|
|||||||
Reference in New Issue
Block a user